Android アプリケーションの作成 - Amazon Location Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Android アプリケーションの作成

Amazon Location Service を使用して iOS アプリケーションを構築するには、次の手順に従います。

GitHub からプロジェクトファイルをクローンします。

AWS アカウントの準備ができたら、Amazon Location Service リソースを生成できます。これらのリソースは、提供されたコードスニペットの実行に不可欠です。

注記

AWS アカウントをまだ作成していない場合は、AWS アカウントを作成してください。

まず、Amazon Cognito アイデンティティプール ID を作成する必要があります。以下の手順に従ってください。

  1. AWS コンソールで、Amazon Cognito に移動して、左側のメニューから [アイデンティティプール] を選択し、[アイデンティティプールを作成] を選択します。

  2. [ゲストアクセス] がオンになっていることを確認し、[次へ] を押して続行します。

  3. 次に、新しい IAM ロールを作成するか、既存の IAM ロールを使用します。

  4. アイデンティティプール名を入力し、次の手順で作成するマップとトラッカーの Amazon Location (geo) リソースにアイデンティティプールがアクセスできることを確認します。

次に、AWS Amazon Location コンソールでマップを作成してスタイルを設定する必要があります。以下の手順に従ってください。

  1. Amazon Location コンソールの [マップ] セクションに移動し、[マップを作成] を選択して使用可能なマップスタイルをプレビューします。

  2. 新しいマップリソースに名前説明を付けます。後からチュートリアルで使用するため、マップリソースに割り当てた名前を記録しておいてください。

  3. マップスタイルを選択する際は、マップデータプロバイダーを考慮してください。詳細については、AWS サービス利用規約の第 82 項を参照してください。

  4. Amazon Location の利用規約に同意し、[マップを作成] を選択します。マップを作成したら、任意の方向にズームイン、ズームアウト、またはパンしてマップを操作できます。

Amazon Location コンソールを使用してトラッカーを作成するには

  1. Amazon Location Service コンソールを開きます。

  2. 左のナビゲーションペインから、[トラッカー] を選択します。

  3. トラッカーを作成を選択します。

  4. すべての必須フィールドに入力します。

  5. [位置フィルター] で、トラッカーリソースの使用目的に最も適したオプションを選択します。位置のフィルタリングを設定しない場合、デフォルト設定は TimeBased となります。詳細については、このガイドの「トラッカー」と「Amazon Location Service トラッカー API リファレンス」の「PositionFiltering」を参照してください。

  6. [トラッカーを作成] を選択して終了します。

ジオフェンスコレクションを作成する際は、コンソール、API、または CLI のいずれかを使用できます。以下の手順で、各オプションについて説明します。

Amazon Location コンソールを使用してジオフェンスコレクションを作成する:

  1. Amazon Location Service コンソール (https://console.aws.amazon.com/location/) を開きます。

  2. 左のナビゲーションペインから、[ジオフェンスコレクション] を選択します。

  3. [ジオフェンスコレクションの作成] を選択します。

  4. コレクションの名前と説明を入力します。

  5. [CloudWatch をターゲットとするEventBridge ルール] で、オプションのEventBridge ルールを作成して、ジオフェンスイベントへの対応を開始できます。これにより、Amazon Location は Amazon CloudWatch Logs にイベントをパブリッシュできるようになります。

  6. [ジオフェンスコレクションの作成] を選択します。

Amazon Location API を使用してジオフェンスコレクションを作成する:

Amazon Location Geofences API の CreateGeofenceCollection オペレーションを使用してください。以下の例では、API リクエストを使用して GOECOLLECTION_NAME というジオフェンスコレクションを作成します。

POST /geofencing/v0/collections Content-type: application/json { "CollectionName": "GOECOLLECTION_NAME", "Description": "Geofence collection 1 for shopping center", "Tags": { "Tag1" : "Value1" } }

AWS CLI コマンドを使用してジオフェンスコレクションを作成する:

create-geofence-collection コマンドを使用します。以下の例では、AWS CLI を使用して GOECOLLECTION_NAME というジオフェンスコレクションを作成します。

aws location \ create-geofence-collection \ --collection-name "GOECOLLECTION_NAME" \ --description "Shopping center geofence collection" \ --tags Tag1=Value1  

トラッカーをジオフェンスコレクションにリンクするには、コンソール、API、または CLI のいずれかを使用できます。以下の手順で、各オプションについて説明します。

Amazon Location Service コンソールを使用してトラッカーリソースをジオフェンスコレクションにリンクする:

  1. Amazon Location コンソールを開きます。

  2. 左のナビゲーションペインから、[トラッカー] を選択します。

  3. [デバイストラッカー] で、対象トラッカーの名前リンクを選択します。

  4. [リンクされたジオフェンスコレクション] で [ジオフェンスコレクションをリンク] を選択します。

  5. [リンクされたジオフェンスコレクション] ウィンドウのドロップダウンメニューからジオフェンスコレクションを選択します。

  6. [Link (リンク)] を選択します。

  7. トラッカーリソースをリンクすると、そのリソースには[アクティブ] ステータスが割り当てられます。

Amazon Location API を使用してトラッカーリソースをジオフェンスコレクションにリンクする:

Amazon Location Trackers API の AsssociateTrackerConsumer オペレーションを使用してください。以下は、Amazon リソースネーム (ARN) を使用して ExampleTracker をジオフェンスコレクションにリンクする API リクエストの例です。

POST /tracking/v0/trackers/ExampleTracker/consumers Content-type: application/json { "ConsumerArn": "arn:aws:geo:us-west-2:123456789012:geofence-collection/GOECOLLECTION_NAME" }

AWS CLI コマンドを使用してトラッカーリソースをジオフェンスコレクションにリンクする:

associate-tracker-consumer コマンドを使用します。以下の例では、AWS CLI を使用して GOECOLLECTION_NAME というジオフェンスコレクションを作成します。

aws location \ associate-tracker-consumer \ --consumer-arn "arn:aws:geo:us-west-2:123456789012:geofence-collection/GOECOLLECTION_NAME" \ --tracker-name "ExampleTracker"

Lambda 関数を作成します。

AWS IoT Core と Amazon Location Service との接続を確立するには、EventBridge CloudWatch イベントから転送されたメッセージを処理する AWS Lambda 関数が必要です。この関数は、位置データを抽出し、Amazon Location Service 用にフォーマットし、Amazon Location Tracker API を通じて送信します。この関数は AWS Lambda コンソールから作成することも、AWS Command Line Interface (AWS CLI) や AWS Lambda API を使用することもできます。コンソールを使用して Amazon Location に位置更新を公開する Lambda 関数を作成するには:

  1. https://console.aws.amazon.com/lambda/ で、AWS Lambda コンソールを開きます。

  2. ナビゲーションペインで、[関数] を選択します。

  3. [関数を作成] を選択し、[ゼロから作る] が選択されていることを確認します。

  4. 次のボックスに入力します。

    • 関数名

    • [ランタイム] オプションで [Node.js 16.x] を選択します。

  5. [Create function] を選択します。

  6. [コード] タブを選択してエディタを開きます。

  7. index.js のプレースホルダーコードを次のように上書きします。

    const AWS = require('aws-sdk') const iot = new AWS.Iot(); exports.handler =  function(event) { console.log("event===>>>", JSON.stringify(event)); var param = { endpointType: "iot:Data-ATS" }; iot.describeEndpoint(param, function(err, data) { if (err) { console.log("error===>>>", err, err.stack); // an error occurred } else {       var endp = data['endpointAddress'];       const iotdata = new AWS.IotData({endpoint: endp});           const trackerEvent = event["detail"]["EventType"];       const src = event["source"];       const time = event["time"];       const gfId = event["detail"]["GeofenceId"];       const resources = event["resources"][0];         const splitResources = resources.split(".");         const geofenceCollection = splitResources[splitResources.length - 1];       const coordinates = event["detail"]["Position"];                                     const deviceId = event["detail"]["DeviceId"];       console.log("deviceId===>>>", deviceId);       const msg =  {           "trackerEventType" : trackerEvent,           "source" : src,           "eventTime" : time,           "geofenceId" : gfId,           "coordinates": coordinates,           "geofenceCollection": geofenceCollection       }; const params = { topic: `${deviceId}/tracker`, payload: JSON.stringify(msg), qos: 0  }; iotdata.publish(params, function(err, data) { if (err) { console.log("error===>>>", err, err.stack); // an error occurred } else { console.log("Ladmbda triggered===>>>", trackerEvent);  // successful response    } }); } }); }
  8. [デプロイ] を選択して、関数を更新します。

  9. 設定タブを選択します。

  10. [トリガー] セクションで、[トリガーを追加] を選択します。

  11. [ソース] フィールドで [EventBridge (CloudWatch Events)] を選択します。

  12. [既存のルール] ラジオオプションを選択します。

  13. 「AmazonLocationMonitor-GEOFENCECOLLECTION_NAME」のようなルール名を入力します。

  14. [追加] ボタンをクリックします。

  15. これにより、アクセス許可タブに「リソースベースのポリシーステートメント」もアタッチされます。

MQTT テストクライアント

  1. https://console.aws.amazon.com/iot/ を開きます。

  2. 左側のナビゲーションペインで、[MQTT テストクライアント] を選択します。

  3. [MQTT テストクライアント] というセクションが表示され、そこで MQTT 接続を設定できます。

  4. 必要な設定を行った後、[接続] ボタンをクリックして、指定したパラメータを使用して MQTT ブローカーへの接続を確立します。

  5. エンドポイント値を書き留めます。

接続すると、MQTT テストクライアントインターフェイスに用意されている各入力フィールドを使用して、MQTT トピックにサブスクライブしたり、トピックにメッセージをパブリッシュしたりできます。次に、MQTT ポリシーをアタッチします。

  1. 左側のメニューの [管理] で、[セキュリティ] オプションを展開し、[ポリシー] をクリックします。

  2. [ポリシーを作成] ボタンをクリックします。

  3. ポリシー名を入力します。

  4. [ポリシードキュメント][JSON] タブを選択します。

  5. 以下に示すポリシーをコピーして貼り付けます。ただし、すべての要素を実際の REGIONACCOUNT_ID で更新してください。

    { "Version": "2012-10-17", "Statement": [     {       "Action": [         "iot:Connect",         "iot:Publish",         "iot:Subscribe",         "iot:Receive"     ],       "Resource": [         "arn:aws:iot:REGION:ACCOUNT_ID:client/${cognito-identity.amazonaws.com:sub}",     "arn:aws:iot:REGION:ACCOUNT_ID:topic/${cognito-identity.amazonaws.com:sub}", "arn:aws:iot:REGION:ACCOUNT_ID:topicfilter/${cognito-identity.amazonaws.com:sub}/", "arn:aws:iot:REGION:ACCOUNT_ID:topic/${cognito-identity.amazonaws.com:sub}/tracker" ], "Effect": "Allow" } ] }
    注記

    次の手順で使用するポリシー名とトピック名を記録します。

  6. [作成] ボタンを選択して終了します。

前の手順が完了したら、以下のようにゲストロールのアクセス許可を更新します。

  1. Amazon Cognito に移動し、アイデンティティプールを開きます。次に、[ユーザーアクセス] に進み、[ゲストロール] を選択します。

  2. [アクセス許可ポリシー] をクリックして、[編集] を有効にします。

    { 'Version': '2012-10-17 ', 'Statement': [ { 'Action': [ 'geo:GetMap*', 'geo:BatchUpdateDevicePosition', 'geo:BatchEvaluateGeofences', 'iot:Subscribe', 'iot:Publish', 'iot:Connect', 'iot:Receive', 'iot:AttachPrincipalPolicy', 'iot:AttachPolicy', 'iot:DetachPrincipalPolicy', 'iot:DetachPolicy' ], 'Resource': [ 'arn:aws:geo:us-east-1:{USER_ID}:map/{MAP_NAME}', 'arn:aws:geo:us-east-1:{USER_ID}:tracker/{TRACKER_NAME}', 'arn:aws:geo:us-east-1:{USER_ID}:geofence-collection/{GEOFENCE_COLLECTION_NAME}', 'arn:aws:iot:us-east-1:{USER_ID}:client/${cognito-identity.amazonaws.com:sub}', 'arn:aws:iot:us-east-1:{USER_ID}:topic/${cognito-identity.amazonaws.com:sub}', 'arn:aws:iot:us-east-1:{USER_ID}:topicfilter/${cognito-identity.amazonaws.com:sub}/*', 'arn:aws:iot:us-east-1:{USER_ID}:topic/${cognito-identity.amazonaws.com:sub}/tracker' ], 'Effect': 'Allow' }, { 'Condition': { 'StringEquals': { 'cognito-identity.amazonaws.com:sub': '${cognito-identity.amazonaws.com:sub}' } }, 'Action': [ 'iot:AttachPolicy', 'iot:DetachPolicy', 'iot:AttachPrincipalPolicy', 'iot:DetachPrincipalPolicy' ], 'Resource': [ '*' ], 'Effect': 'Allow' } ] }
  3. 上記のポリシーの変更により、アプリケーションに必要なすべての AWS リソースが適切に設定されました。

  1. Android Studio を開き、[New][Project from Version Control] の順に選択します。

  2. Android Studio の左上隅にある [File] メニューに移動します。

  3. ドロップダウンメニューで [New] を選択します。

  4. [Project from Version Control] を選択します。

  5. リポジトリ URL を入力します。表示されるダイアログボックスで、「URL」とマークされたフィールドを見つけます。

  6. サンプルアプリケーションの次の URL をコピーして、次のフィールドに貼り付けます。https://github.com/aws-geospatial/amazon-location-samples-android.git

  7. リポジトリをクローンするディレクトリを決定します。デフォルトのディレクトリを使用するか、カスタムの場所を選択します。

  8. リポジトリ URL とディレクトリの設定が完了したら、[Clone] ボタンをクリックします。Android Studio により、指定された場所にリポジトリのクローンが作成されます。

  9. アプリケーションがマシンにクローンされ、使用を開始できます。

サンプルを使用するには、以下の手順に従います。

  • を作成する:custom.properties

    custom.properties ファイルを設定するには、以下の手順に従います。

    1. 任意のテキストエディタまたは IDE を開きます。

    2. 新しいファイルを作成します。

    3. 次に、custom.properties という名前でファイルを保存します。

    4. custom.properties を以下のコードサンプルで更新し、MQTT_END_POINTPOLICY_NAMEGEOFENCE_COLLECTION_NAMETOPIC_TRACKER を実際の値に置き換えます。

      MQTT_END_POINT=xxxxxxxxxxxxx-xxx.xxx.us-east-1.amazonaws.com POLICY_NAME=xxxxxxxxx GEOFENCE_COLLECTION_NAME=xxxxxxxxxxxxxxxxx TOPIC_TRACKER=xxxxxxxxxx
    5. プロジェクトをクリーンアップして再構築します。その後、プロジェクトを実行できます。

  • サインイン:

    アプリケーションにサインインするには、以下の手順に従います。

    1. [サインイン] ボタンを押します。

    2. アイデンティティプール IDトラッカー名マップ名を指定します。

    3. [サインイン] をもう一度押して終了します。

  • フィルタを管理する:

    設定画面を開き、次の操作を実行します。

    1. スイッチ UI を使用してフィルターのオン/オフを切り替えます。

    2. 必要に応じて、時間と距離のフィルタを更新します。

  • 追跡オペレーション:

    追跡画面を開き、以下の操作を実行します。

    • フォアグラウンド、バックグラウンド、バッテリーセーバーの各モードでの追跡は、それぞれ対応するボタンを押すと、開始および停止できます。