安卓手机追踪 SDK - Amazon Location Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

安卓手机追踪 SDK

Amazon Location 移动追踪SDK提供实用工具,可帮助轻松进行身份验证、捕获设备位置以及向亚马逊位置追踪器发送位置更新。SDK支持使用可配置的更新间隔对位置更新进行本地筛选。这可以降低数据成本,并优化您的 Android 应用程序的间歇性连接。

安卓追踪功能SDK可在以下网址获得 GitHub:安卓版亚马逊定位移动SDK追踪。此外,AWS Maven 存储库中 AWS SDK还提供了移动身份验证SDK和。Android 跟踪专SDK为与普通用户配合使用而设计 AWS SDK。

本节涵盖亚马逊定位手机追踪安卓系统的以下主题SDK:

安装

要安装SDK,请在 Android Studio 中 build.gradle 文件的依赖项部分添加以下几行:

implementation("software.amazon.location:tracking:0.0.1") implementation("software.amazon.location:auth:0.0.1") implementation("com.amazonaws:aws-android-sdk-location:2.72.0")

使用量

此过程向您展示如何使用对LocationTracker对象SDK进行身份验证和创建:

注意

此过程假设您已导入本安装节中提到的库。

  1. 在你的代码中导入以下类:

    import software.amazon.location.tracking.LocationTracker import software.amazon.location.tracking.config.LocationTrackerConfig import software.amazon.location.tracking.util.TrackingSdkLogLevel import com.amazonaws.services.geo.AmazonLocationClient import software.amazon.location.auth.AuthHelper import software.amazon.location.auth.LocationCredentialsProvider
  2. 接下来创建一个AuthHelper,因为创建LocationTracker对象需要LocationCredentialsProvider参数:

    // Create an authentication helper using credentials from Cognito val authHelper = AuthHelper(applicationContext) val locationCredentialsProvider : LocationCredentialsProvider = authHelper.authenticateWithCognitoIdentityPool("My-Cognito-Identity-Pool-Id")
  3. 现在,使用LocationCredentialsProviderLocationTrackerConfig来创建一个LocationTracker对象:

    val config = LocationTrackerConfig( trackerName = "MY-TRACKER-NAME", logLevel = TrackingSdkLogLevel.DEBUG, accuracy = Priority.PRIORITY_HIGH_ACCURACY, latency = 1000, frequency = 5000, waitForAccurateLocation = false, minUpdateIntervalMillis = 5000, ) locationTracker = LocationTracker( applicationContext, locationCredentialsProvider, config, )

筛选条件

Amazon Location 移动追踪安卓系统SDK有三个内置的位置过滤器。

  • TimeLocationFilter:根据定义的时间间隔筛选当前要上传的位置。

  • DistanceLocationFilter:根据指定的距离阈值过滤位置更新。

  • AccuracyLocationFilter:通过将自上次更新以来的移动距离与当前位置的精度进行比较来筛选位置更新。

此示例在创建时LocationTracker在中添加过滤器:

val config = LocationTrackerConfig( trackerName = "MY-TRACKER-NAME", logLevel = TrackingSdkLogLevel.DEBUG, accuracy = Priority.PRIORITY_HIGH_ACCURACY, latency = 1000, frequency = 5000, waitForAccurateLocation = false, minUpdateIntervalMillis = 5000, locationFilters = mutableListOf(TimeLocationFilter(), DistanceLocationFilter(), AccuracyLocationFilter()) ) locationTracker = LocationTracker( applicationContext, locationCredentialsProvider, config, )

此示例使用以下命令在运行时启用和禁用过滤器:LocationTracker

// To enable the filter locationTracker?.enableFilter(TimeLocationFilter()) // To disable the filter locationTracker?.disableFilter(TimeLocationFilter())

安卓手机SDK追踪功能

安卓版 Amazon L SDK ocation 移动追踪包括以下功能:

  • 班级:LocationTracker

    constructor(context: Context,locationCredentialsProvider: LocationCredentialsProvider,trackerName: String),或者 constructor(context: Context,locationCredentialsProvider: LocationCredentialsProvider,clientConfig: LocationTrackerConfig)

    这是一个用于创建LocationTracker对象的初始化函数。它需要的实例 LocationCredentialsProvidertrackerName,也可以需要一个实例LocationTrackingConfig。如果未提供配置,则将使用默认值对其进行初始化。

  • 班级:LocationTracker

    start(locationTrackingCallback: LocationTrackingCallback)

    启动访问用户位置并将其发送到 Amazon 位置追踪器的过程。

  • 班级:LocationTracker

    isTrackingInForeground()

    检查位置追踪当前是否正在进行中。

  • 班级:LocationTracker

    stop()

    停止跟踪用户位置的过程。

  • 班级:LocationTracker

    startTracking()

    启动访问用户位置并将其发送到 AWS 跟踪器的过程。

  • 班级:LocationTracker

    startBackground(mode: BackgroundTrackingMode, serviceCallback: ServiceCallback)

    启动访问用户位置的过程,并在应用程序处于后台时将其发送到 AWS 跟踪器。 BackgroundTrackingMode 有以下选项:

    • ACTIVE_TRACKING:此选项会主动跟踪用户的位置更新。

    • BATTERY_SAVER_TRACKING:此选项每 15 分钟跟踪一次用户的位置更新。

  • 班级:LocationTracker

    stopBackgroundService()

    当应用程序处于后台时,停止访问用户位置并将其发送到 AWS 跟踪器的过程。

  • 班级:LocationTracker

    getTrackerDeviceLocation()

    从 Amazon 定位服务中检索设备位置。

  • 班级:LocationTracker

    getDeviceLocation(locationTrackingCallback: LocationTrackingCallback?)

    从融合的位置信息提供商客户端检索当前设备位置,并将其上传到 Amazon 位置追踪器。

  • 班级:LocationTracker

    uploadLocationUpdates(locationTrackingCallback: LocationTrackingCallback?)

    根据配置的位置筛选条件进行筛选后,将设备位置上传到 Amazon 定位服务。

  • 班级:LocationTracker

    enableFilter(filter: LocationFilter)

    启用特定的位置过滤器。

  • 班级:LocationTracker

    checkFilterIsExistsAndUpdateValue(filter: LocationFilter)

    禁用特定位置过滤器。

  • 班级:LocationTrackerConfig

    LocationTrackerConfig( // Required var trackerName: String, // Optional var locationFilters: MutableList = mutableListOf( TimeLocationFilter(), DistanceLocationFilter(), ), var logLevel: TrackingSdkLogLevel = TrackingSdkLogLevel.DEBUG, var accuracy: Int = Priority.PRIORITY_HIGH_ACCURACY, var latency: Long = 1000, var frequency: Long = 1500, var waitForAccurateLocation: Boolean = false, var minUpdateIntervalMillis: Long = 1000, var persistentNotificationConfig: NotificationConfig = NotificationConfig())

    这将LocationTrackerConfig使用用户定义的参数值初始化。如果未提供参数值,则会将其设置为默认值。

  • 班级:LocationFilter

    shouldUpload(currentLocation: LocationEntry, previousLocation: LocationEntry?): Boolean

    LocationFilter是用户可以为其自定义过滤器实现实现的协议。你需要实现这个shouldUpload函数来比较以前和现在的位置,并返回是否应该上传当前的位置。

示例

以下代码示例显示了移动设备跟踪SDK功能。

此示例使用在后台LocationTracker开始和停止跟踪:

// For starting the location tracking locationTracker?.startBackground( BackgroundTrackingMode.ACTIVE_TRACKING, object : ServiceCallback { override fun serviceStopped() { if (selectedTrackingMode == BackgroundTrackingMode.ACTIVE_TRACKING) { isLocationTrackingBackgroundActive = false } else { isLocationTrackingBatteryOptimizeActive = false } } }, ) // For stopping the location tracking locationTracker?.stopBackgroundService()