Créer une application Android - Amazon Location Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Créer une application Android

Suivez ces procédures pour créer une application iOS à l'aide d'Amazon Location Service.

Clonez les fichiers de projet à partir de GitHub.

Vous pouvez générer des ressources Amazon Location Service une fois que votre AWS compte est prêt. Ces ressources seront essentielles pour exécuter les extraits de code fournis.

Note

Si vous n'avez pas encore créé de AWS compte, veuillez en créer un AWS.

Pour commencer, vous devez créer un identifiant de pool d'identités Amazon Cognito, suivez la procédure suivante :

  1. Dans la AWS console, accédez au service Amazon Cognito, puis sélectionnez Groupes d'identités dans le menu de gauche, puis sélectionnez Créer un pool d'identités.

  2. Assurez-vous que l'option Accès invité est cochée, puis appuyez sur Suivant pour continuer.

  3. Créez ensuite un nouveau rôle IAM ou utilisez un rôle IAM existant.

  4. Entrez le nom du pool d'identités et assurez-vous que le pool d'identités a accès aux (geo) ressources Amazon Location pour la carte et le tracker que vous allez créer lors de la procédure suivante.

Vous devez maintenant créer et mettre en forme une carte dans la console AWS Amazon Location, en suivant la procédure suivante :

  1. Accédez à la section Cartes de la console Amazon Location et sélectionnez Create Map pour prévisualiser les styles de carte disponibles.

  2. Donnez un nom et une description à la nouvelle ressource cartographique. Enregistrez le nom que vous attribuez à la ressource cartographique, tel qu'il sera utilisé ultérieurement dans le didacticiel.

  3. Lorsque vous choisissez un style de carte, pensez au fournisseur de données cartographiques. Reportez-vous à la section 82 des conditions de AWS service pour plus de détails.

  4. Acceptez les conditions générales d'Amazon Location, puis sélectionnez Create Map. Une fois la carte créée, vous pouvez interagir avec elle en zoomant, en arrière ou en vous déplaçant dans n'importe quelle direction.

Pour créer un outil de suivi à l'aide de la console Amazon Location

  1. Ouvrez la console Amazon Location Service.

  2. Dans le volet de navigation de gauche, choisissez Trackers.

  3. Choisissez Créer un tracker.

  4. Remplissez tous les champs obligatoires.

  5. Sous Filtrage des positions, choisissez l'option qui correspond le mieux à la manière dont vous avez l'intention d'utiliser votre ressource de suivi. Si vous ne définissez pas le filtrage de position, le paramètre par défaut est TimeBased. Pour plus d'informations, consultez la section Trackers dans ce guide et PositionFiltering dans le manuel Amazon Location Service Trackers API Reference.

  6. Choisissez Créer un tracker pour terminer.

Lorsque vous créez une collection de géofences, vous pouvez utiliser la console, l'API ou la CLI. Les procédures suivantes vous guident à travers chaque option.

Créez une collection de géofences à l'aide de la console Amazon Location :

  1. Ouvrez la console Amazon Location Service à l'adresse https://console.aws.amazon.com/location/.

  2. Dans le volet de navigation de gauche, choisissez Geofence Collections.

  3. Choisissez Créer une collection de géofences.

  4. Saisissez un nom et une description pour la collection.

  5. Dans le cadre d'une EventBridge règle avec CloudWatch comme cible, vous pouvez créer une EventBridge règle facultative pour commencer à réagir aux événements de géofence. Cela permet à Amazon Location de publier des événements sur Amazon CloudWatch Logs.

  6. Choisissez Créer une collection de géofences.

Créez une collection de géofences à l'aide de l'emplacement Amazon : APIs

Utilisez l' CreateGeofenceCollection opération depuis Amazon Location Geofences APIs. L'exemple suivant utilise une demande d'API pour créer une collection de géofences appelée. GOECOLLECTION_NAME

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

Créez une collection de géofences à l'aide AWS CLI des commandes suivantes :

Utilisez la commande create-geofence-collection. L'exemple suivant utilise an AWS CLI pour créer une collection de géofences appelée. GOECOLLECTION_NAME

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

Pour lier un tracker à une collection de géofences, vous pouvez utiliser la console, l'API ou la CLI. Les procédures suivantes vous guident à travers chaque option.

Associez une ressource de suivi à une collection de géofences à l'aide de la console Amazon Location Service :

  1. Ouvrez la console Amazon Location.

  2. Dans le volet de navigation de gauche, choisissez Trackers.

  3. Sous Device Trackers, sélectionnez le lien du nom du tracker cible.

  4. Sous Collections Geofence liées, choisissez Link Geofence Collection.

  5. Dans la fenêtre Linked Geofence Collection, sélectionnez une collection de géofences dans le menu déroulant.

  6. Choisissez Lier.

  7. Une fois que vous aurez lié la ressource de suivi, le statut Actif lui sera attribué.

Associez une ressource de suivi à une collection de géofences à l'aide d'Amazon Location : APIs

Utilisez l'AsssociateTrackerConsumer opération des Amazon Location Trackers APIs. L'exemple suivant utilise une demande d'API associée à une collection de géofences à l'aide de son Amazon Resource Name (ARN). ExampleTracker

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

Associez une ressource de suivi à une collection de géofences à l'aide AWS CLI des commandes suivantes :

Utilisez la commande associate-tracker-consumer . L'exemple suivant utilise an AWS CLI pour créer une collection de géofences appelée. GOECOLLECTION_NAME

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

Création d’une fonction Lambda.

Pour créer une connexion entre Amazon Location Service AWS IoT Core et Amazon, vous avez besoin d'une AWS Lambda fonction permettant de traiter les messages transférés par des EventBridge CloudWatch événements. Cette fonction permet d'extraire toutes les données de position, de les formater pour Amazon Location Service et de les envoyer via l'API Amazon Location Tracker. Vous pouvez créer cette fonction via la AWS Lambda console, ou vous pouvez utiliser le AWS Command Line Interface (AWS CLI) ou le AWS Lambda APIs. Pour créer une fonction Lambda qui publie des mises à jour de position sur Amazon Location à l'aide de la console :

  1. Ouvrez la AWS Lambda console à l'adresse https://console.aws.amazon.com/lambda/.

  2. Dans le menu de navigation de gauche, choisissez Functions.

  3. Choisissez Créer une fonction et assurez-vous que l'option Auteur à partir de zéro est sélectionnée.

  4. Remplissez les cases suivantes :

    • un nom de fonction

    • pour l'option Runtime, choisissez Node.js 16.x.

  5. Choisissez Créer une fonction.

  6. Cliquez sur l'onglet Code pour ouvrir l'éditeur.

  7. Remplacez le code de l'espace réservé dans le fichier index.js par le code suivant :

    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. Choisissez Déployer pour enregistrer la fonction mise à jour.

  9. Cliquez sur l’onglet Configuration.

  10. Dans la section Déclencheurs, cliquez sur Ajouter un déclencheur.

  11. Sélectionnez EventBridge (CloudWatch Événements) dans le champ Source.

  12. Sélectionnez l'option radio « Règles existantes ».

  13. Entrez le nom de la règle comme suit `AmazonLocationMonitor-GEOFENCECOLLECTION_NAME`.

  14. Cliquez sur le bouton Ajouter.

  15. Cela ajoutera également des « déclarations de politique basées sur les ressources » dans l'onglet des autorisations

Client de test MQTT

  1. Ouvrez la https://console.aws.amazon.com/iot/.

  2. Dans le volet de navigation de gauche, choisissez le client de test MQTT.

  3. Vous verrez une section intitulée Client de test MQTT dans laquelle vous pouvez configurer votre connexion MQTT.

  4. Après avoir configuré les paramètres nécessaires, cliquez sur le bouton Connect pour établir une connexion avec le broker MQTT à l'aide des paramètres fournis.

  5. Notez la valeur du point de terminaison.

Une fois connecté, vous pouvez vous abonner à des sujets MQTT ou publier des messages sur des sujets en utilisant les champs de saisie correspondants fournis dans l'interface client de test MQTT. Ensuite, vous allez joindre la politique MQTT :

  1. Dans le menu de gauche, sous Gérer, développez l'option de sécurité et cliquez sur Politiques.

  2. Cliquez sur le bouton Créer une politique.

  3. Entrez un nom de stratégie.

  4. Dans le document de politique, sélectionnez l'onglet JSON.

  5. Copiez-collez la politique ci-dessous, mais assurez-vous de mettre à jour tous les éléments avec votre REGION et ACCOUNT_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" } ] }
    Note

    Enregistrez le nom de la politique et le nom du sujet à utiliser dans la procédure suivante.

  6. Cliquez sur le bouton Créer pour terminer.

Après avoir terminé la procédure précédente, vous allez maintenant mettre à jour les autorisations pour le rôle d'invité comme suit :

  1. Accédez à Amazon Cognito et ouvrez votre pool d'identités. Passez ensuite à l'accès utilisateur et sélectionnez le rôle d'invité.

  2. Cliquez sur les politiques d'autorisation pour activer la modification.

    { '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. Avec les modifications de politique ci-dessus, toutes les AWS ressources nécessaires sont désormais configurées de manière appropriée pour l'application.

  1. Ouvrez Android Studio et sélectionnez Nouveau, puis Projeter depuis le contrôle de version.

  2. Accédez au menu Fichier dans le coin supérieur gauche d'Android Studio.

  3. Sélectionnez « Nouveau » dans le menu déroulant.

  4. Choisissez « Projet à partir du contrôle de version ».

  5. Entrez l'URL du référentiel Dans la boîte de dialogue qui apparaît, recherchez le champ « URL ».

  6. Copiez et collez l'URL suivante pour l'exemple d'application dans ce champ : https://github.com/aws-geospatial/amazon-location-samples-android.git

  7. Choisissez le répertoire dans lequel vous souhaitez cloner le référentiel. Utilisez le répertoire par défaut ou optez pour un emplacement personnalisé.

  8. Après avoir défini l'URL du dépôt et les préférences du répertoire, cliquez sur le bouton « Cloner ». Android Studio va procéder au clonage du dépôt à l'emplacement que vous avez indiqué.

  9. Vous avez maintenant cloné l'application sur votre machine et vous pouvez commencer à l'utiliser.

Pour utiliser l'exemple, suivez les procédures suivantes :

  • Créez un custom.properties :

    Pour configurer votre custom.properties fichier, procédez comme suit :

    1. Ouvrez votre éditeur de texte ou IDE préféré.

    2. Créez un nouveau fichier.

    3. Enregistrez le fichier sous le nom custom.properties.

    4. Mettez à jour le custom.properties avec l'exemple de code suivant et remplacez le MQTT_END_POINTPOLICY_NAME,GEOFENCE_COLLECTION_NAME, et TOPIC_TRACKER par les valeurs réelles :

      MQTT_END_POINT=xxxxxxxxxxxxx-xxx.xxx.us-east-1.amazonaws.com POLICY_NAME=xxxxxxxxx GEOFENCE_COLLECTION_NAME=xxxxxxxxxxxxxxxxx TOPIC_TRACKER=xxxxxxxxxx
    5. Nettoyez et reconstruisez le projet. Ensuite, vous pouvez exécuter le projet.

  • Connectez-vous :

    Pour vous connecter à l'application, suivez les étapes ci-dessous :

    1. Appuyez sur le bouton de connexion.

    2. Fournissez un identifiant de pool d'identités, un nom de tracker et un nom de carte.

    3. Appuyez à nouveau sur Se connecter pour terminer.

  • Gérer les filtres :

    Ouvrez l'écran de configuration et effectuez les opérations suivantes :

    1. Basculez entre les filtres on/off à l'aide de l'interface utilisateur du commutateur.

    2. Mettez à jour les filtres de temps et de distance en cas de besoin.

  • Opérations de suivi :

    Ouvrez l'écran de suivi et effectuez les opérations suivantes :

    • Vous pouvez démarrer et arrêter le suivi au premier plan, en arrière-plan ou en mode économie de batterie en appuyant sur les boutons correspondants.