本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon Location 行動追蹤SDK提供公用程式,可協助輕鬆驗證、擷取裝置位置,以及傳送位置更新至 Amazon Location Trackers。SDK 支援以可設定的更新間隔對位置更新進行本機篩選。這可降低資料成本,並最佳化 Android 應用程式的間歇性連線。
Android 追蹤SDK可在 上取得 GitHub:Amazon Location Mobile Tracking SDK for Android
本節涵蓋 Amazon Location 行動追蹤 Android 的下列主題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")
用量
此程序說明如何使用 SDK來驗證和建立LocationTracker
物件:
注意
此程序假設您已匯入 安裝章節所述的程式庫。
-
在程式碼中匯入下列類別:
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 行動追蹤 Android 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())
Android Mobile SDK追蹤功能
Android SDK版 Amazon Location 行動追蹤包含下列功能:
-
類別:
LocationTracker
constructor(context: Context,locationCredentialsProvider: LocationCredentialsProvider,trackerName: String)
, 或constructor(context: Context,locationCredentialsProvider: LocationCredentialsProvider,clientConfig: LocationTrackerConfig)
這是建立
LocationTracker
物件的初始化器函數。它需要LocationCredentialsProvider
執行個體,trackerName
以及選用的 執行個體LocationTrackingConfig
。如果未提供組態,則會使用預設值初始化組態。 -
類別:
LocationTracker
start(locationTrackingCallback: LocationTrackingCallback)
開始存取使用者位置並將其傳送至 Amazon Location 追蹤器的程序。
-
類別:
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 Location 服務擷取裝置位置。
-
類別:
LocationTracker
getDeviceLocation(locationTrackingCallback: LocationTrackingCallback?)
從聯合位置提供者用戶端擷取目前的裝置位置,並將其上傳至 Amazon Location 追蹤器。
-
類別:
LocationTracker
uploadLocationUpdates(locationTrackingCallback: LocationTrackingCallback?)
根據設定的位置篩選條件篩選後,將裝置位置上傳至 Amazon Location 服務。
-
類別:
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()