本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
安卓手机追踪 SDK
Amazon Location 移动追踪SDK提供实用工具,可帮助轻松进行身份验证、捕获设备位置以及向亚马逊位置追踪器发送位置更新。SDK支持使用可配置的更新间隔对位置更新进行本地筛选。这可以降低数据成本,并优化您的 Android 应用程序的间歇性连接。
安卓追踪功能SDK可在以下网址获得 GitHub:安卓版亚马逊定位移动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进行身份验证和创建:
注意
此过程假设您已导入本安装节中提到的库。
-
在你的代码中导入以下类:
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
-
接下来创建一个
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")
-
现在,使用
LocationCredentialsProvider
和LocationTrackerConfig
来创建一个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
对象的初始化函数。它需要的实例LocationCredentialsProvider
trackerName
,也可以需要一个实例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()