Android 用 Mobile Tracking SDK - Amazon Location Service

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 として入手できます。さらに、Mobile Authentication SDK と AWS SDK はどちらも AWS Maven リポジトリで入手できます。Android 用 Mobile Tracking SDK は、一般的な AWS SDK で動作するように設計されています。

このセクションでは、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 オブジェクトを作成する方法を示します。

注記

この手順では、「インストール」セクションで説明したライブラリをインポートしていることを前提としています。

  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. 次に、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")
  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 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 オブジェクトを作成する初期化関数です。この関数には、LocationCredentialsProvidertrackerName、およびオプションで 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()