Android 用 Mobile Tracking SDK
Amazon Location Mobile Tracking SDK には、認証、デバイスの位置の取得、Amazon Location Tracker への位置情報の更新の送信に役立つユーティリティが用意されています。この SDK は、位置情報の更新に対して、ローカルでのフィルタリングをサポートしており、更新間隔を設定できます。これにより、データコストが削減され、Android アプリケーションの断続的な接続が最適化されます。
Android 用 Mobile Tracking SDK は GitHub で Amazon Location Mobile Tracking SDK for Android
このセクションでは、Amazon Location Mobile Tracking SDK for Android について以下のトピックを取り上げます。
インストール
SDK をインストールするには、Android Studio で build.gradle ファイルの dependencies セクションに以下の行を追加します。
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
-
次に、
LocationTracker
オブジェクトを作成するにはLocationCredentialsProvider
パラメータが必要になるため、AuthHelper
を作成します。// 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 Mobile Tracking SDK for Android には、3 つの組み込みの位置情報フィルタがあります。
-
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 Tracking SDK の追跡関数
Amazon Location Mobile Tracking SDK for Android には、以下の関数が含まれています。
-
クラス:
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 Tracker に送信するプロセスを開始します。
-
クラス:
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 Service からデバイスの位置情報を取得します。
-
クラス:
LocationTracker
getDeviceLocation(locationTrackingCallback: LocationTrackingCallback?)
複合位置情報プロバイダークライアントからデバイスの現在の位置情報を取得し、Amazon Location Tracker にアップロードします。
-
クラス:
LocationTracker
uploadLocationUpdates(locationTrackingCallback: LocationTrackingCallback?)
設定した位置情報フィルタに基づいてフィルタリングした後、デバイスの位置情報を Amazon Location Service にアップロードします。
-
クラス:
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
関数を実装する必要があります。
例
以下のコードサンプルは Mobile Tracking 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()