Aplicación de seguimiento de muestras y geovallas para Android - Amazon Location Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Aplicación de seguimiento de muestras y geovallas para Android

Este tema cubre el tutorial de Android diseñado para demostrar las características clave del uso de las geovallas y rastreadores de Amazon Location en una aplicación móvil. Las aplicaciones muestran cómo interactúan un rastreador y un geonfence mediante una combinación de funciones de Lambda y AWS IoT Amazon Location.

Crea recursos de Amazon Location para tu aplicación

Para empezar, tendrás que crear los recursos de Amazon Location necesarios. Estos recursos serán esenciales para el funcionamiento de la aplicación y para ejecutar los fragmentos de código proporcionados.

nota

Si no has creado una AWS cuenta, sigue las instrucciones de la guía del usuario de administración de AWS cuentas.

Para empezar, tendrá que crear un ID de grupo de identidades de Amazon Cognito, mediante el siguiente procedimiento:

  1. Abra la consola de Amazon Cognito y seleccione Grupos de identidades en el menú de la izquierda y, a continuación, seleccione Crear grupo de identidades.

  2. Asegúrese de que Guest Access esté marcada y pulse Siguiente para continuar.

  3. A continuación, cree una nueva función de IAM o utilice una función de IAM existente.

  4. Introduce un nombre de grupo de identidades y asegúrate de que Identity Pool tiene acceso a (geo) los recursos de Amazon Location para el mapa y el rastreador que vas a crear en el siguiente procedimiento.

A continuación, debe crear y aplicar estilo a un mapa en la consola de AWS Amazon Location, siguiendo el siguiente procedimiento:

  1. Ve a la sección Mapas de la consola Amazon Location y selecciona Create Map.

  2. Asigna un nombre y una descripción al nuevo mapa. Registre el nombre que le asigne, tal y como se utilizará más adelante en el tutorial.

  3. Al elegir un estilo de mapa, tenga en cuenta el proveedor de datos del mapa. Consulte la sección 82 de las condiciones del AWS servicio para obtener más información.

  4. Acepta los términos y condiciones de Amazon Location y, a continuación, selecciona Crear mapa para finalizar el proceso de creación del mapa.

A continuación, debe crear un rastreador en la consola de Amazon Location, mediante el siguiente procedimiento:

  1. Abre la sección Mapas en la consola de Amazon Location.

  2. Seleccione Crear rastreador.

  3. Rellena los campos obligatorios. Anota el nombre del rastreador, ya que aparecerá como referencia a él en este tutorial.

  4. En el campo de filtrado de posición, elige la opción que mejor se adapte a la forma en que piensas utilizar el recurso de tu rastreador. Si no configuras el filtrado de posición, el ajuste predeterminado esTimeBased. Para obtener más información, consulta Rastreadores y PositionFilteringen la referencia de la API de ubicación de Amazon.

  5. Selecciona Crear rastreador para terminar de crear el rastreador.

Crea una colección de Geofence

Ahora crearás una colección de geofence. Puede usar la consola, la API o la CLI. Los siguientes procedimientos le guiarán por cada opción.

  • Crea una colección de geovallas con la consola de Amazon Location:

    1. Abre la sección Colecciones de Geofence de la consola de Amazon Location.

    2. Seleccione Crear colección de geovallas.

    3. Escriba un nombre y una descripción para la colección.

    4. Según la EventBridge regla con Amazon CloudWatch como objetivo, puede crear una EventBridge regla opcional para empezar a reaccionar ante los eventos de geofence. Esto permite a Amazon Location publicar eventos en Amazon CloudWatch Logs.

    5. Pulse el botón Crear colección geofence para terminar de crear la colección.

  • Crea una colección de geovallas mediante la API de Amazon Location:

    Usa la CreateGeofenceCollectionoperación desde las API de Amazon Location Geofences. En el siguiente ejemplo, se utiliza una solicitud de API para crear una colección de geocercas llamada. GEOCOLLECTION_NAME

    POST /geofencing/v0/collections Content-type: application/json { "CollectionName": "GEOCOLLECTION_NAME", "Description": "Geofence collection 1 for shopping center", "Tags": { "Tag1" : "Value1" } }
  • Cree una colección de geocercas mediante los comandos de la AWS CLI:

    Utilice el comando create-geofence-collection. El siguiente ejemplo utiliza una AWS CLI para crear una colección de geocercas llamada. GEOCOLLECTION_NAME Para obtener más información sobre el uso de la AWS CLI, consulte la documentación de la interfaz de línea de AWS comandos.

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

Para vincular un rastreador a una colección de geovallas, puede usar la consola, la API o la CLI. Los siguientes procedimientos le guiarán por cada opción.

Vincule un recurso de rastreo a una colección de geovallas mediante la consola de Amazon Location Service:

  1. Abre la consola de Amazon Location.

  2. En el panel de navegación izquierdo, elija Rastreadores.

  3. En Device Trackers, selecciona el enlace con el nombre del rastreador objetivo.

  4. En Colecciones de geovallas vinculadas, elija Vincular colección de geovallas.

  5. En la ventana Colección de geovallas vinculadas, seleccione una colección de geovallas en el menú desplegable.

  6. Elija Vincular.

  7. Tras vincular el recurso de rastreador, se le asignará el estado Activo.

Vincula un recurso de rastreo a una colección de geovallas mediante las API de ubicación de Amazon:

Use la operación AsssociateTrackerConsumer de las API de Amazon Location Trackers. En el siguiente ejemplo, se utiliza una solicitud de API que asocia y a una colección de geovallas mediante su nombre de recurso de Amazon (ARN). ExampleTracker

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

Vincule un recurso de rastreo a una colección de geovallas mediante los comandos de la AWS CLI:

Utilice el comando associate-tracker-consumer . El siguiente ejemplo utiliza una AWS CLI para crear una colección de geocercas llamada. GOECOLLECTION_NAME

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

Uso de AWS Lambda con MQTT

Para crear una conexión entre una ubicación de Amazon AWS IoT y Amazon, necesitas una función Lambda para procesar los mensajes reenviados por EventBridge CloudWatch eventos. Esta función extraerá todos los datos posicionales, los formateará para Amazon Location y los enviará a través de la API Amazon Location Tracker.

El siguiente procedimiento muestra cómo crear esta función a través de la consola Lambda:

  1. Abra la consola de .

  2. En el panel de navegación izquierdo, elija Funciones.

  3. A continuación, elija Crear función y asegúrese de que esté seleccionada la opción Autor desde cero.

  4. proporcione un nombre de función y, para la opción Runtime, elija Node.js 16.x.

  5. Elija Crear función.

  6. Abra la pestaña Código para acceder al editor.

  7. Sobrescribe el código marcador de posición del index.js archivo con lo siguiente:

    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. Pulse el botón Desplegar para guardar la función actualizada.

  9. A continuación, abra la pestaña Configuración.

  10. En la sección Activadores, pulse el botón Añadir disparador.

  11. Seleccione EventBridge (CloudWatch Eventos) en el campo Fuente.

  12. Seleccione la opción Reglas existentes.

  13. Introduzca el nombre de la regla, por ejemploAmazonLocationMonitor-GEOFENCECOLLECTION_NAME.

  14. Pulse el botón Añadir.

  15. Esto también adjuntará las declaraciones de política basadas en los recursos en la pestaña de permisos

Ahora configurará el cliente de pruebas de MQTT mediante el AWS IoT siguiente procedimiento:

  1. Abra el https://console.aws.amazon.com/iot/.

  2. En el panel de navegación izquierdo, seleccione el cliente de prueba MQTT.

  3. Verá una sección titulada Cliente de prueba MQTT en la que puede configurar su conexión MQTT.

  4. Después de configurar los ajustes necesarios, haga clic en el botón Connect para establecer una conexión con el corredor MQTT utilizando los parámetros proporcionados.

  5. Registre el punto final, tal como se utiliza más adelante en el tutorial.

    Una vez conectado al cliente de prueba, puede suscribirse a los temas de MQTT o publicar mensajes sobre los temas utilizando los campos de entrada correspondientes que se proporcionan en la interfaz del cliente de prueba de MQTT. A continuación, creará una AWS IoT política.

  6. En el menú de la izquierda, en Administrar, expanda la opción Seguridad y haga clic en Políticas.

  7. Haga clic en el botón Crear política.

  8. Escriba un nombre para la política.

  9. En el documento de política, seleccione la pestaña JSON.

  10. Copia y pega la política que se muestra a continuación, pero asegúrate de actualizar todos los elementos con tu REGION manoACCOUNT_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" } ] }
  11. Selecciona el botón Crear para terminar.

Tras completar el procedimiento anterior, ahora actualizará los permisos del rol de invitado de la siguiente manera:

  1. Navegue hasta Amazon Cognito y abra su grupo de identidades. A continuación, vaya al acceso de usuario y seleccione el rol de invitado.

  2. Haga clic en las políticas de permisos para habilitar la edición.

    { '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. Con los cambios de política anteriores, todos los AWS recursos necesarios ahora están configurados adecuadamente para la aplicación.

Configure el código de la aplicación de muestra

  1. Clona este repositorio: https://github.com/aws-geospatial/ amazon-location-samples-android /tree/main/ tracking-with-geofence-notifications en tu máquina local.

  2. Abre el AmazonSampleSDKApp proyecto en Android Studio.

  3. Crea y ejecuta la aplicación en tu emulador o dispositivo Android.

Uso de la aplicación de muestra

Para usar el ejemplo, siga estos procedimientos:

  • Cree un custom.properties:

    Para configurar el custom.properties archivo, sigue estos pasos:

    1. Abre tu editor de texto o IDE preferido.

    2. Cree un archivo nuevo.

    3. Guarde el archivo con el nombre custom.properties.

    4. Actualízalo custom.properties con el siguiente ejemplo de código y reemplaza MQTT_END_POINT POLICY_NAMEGEOFENCE_COLLECTION_NAME, y por los TOPIC_TRACKER nombres de tus recursos:

      MQTT_END_POINT=YOUR_END_POINT.us-east-1.amazonaws.com POLICY_NAME=YOUR_POLICY GEOFENCE_COLLECTION_NAME=YOUR_GEOFENCE TOPIC_TRACKER=YOUR_TRACKER
    5. Limpie y reconstruya el proyecto. Después de esto, puede ejecutar el proyecto.

  • Iniciar sesión:

    Para iniciar sesión en la aplicación, sigue los pasos que se indican a continuación:

    1. Presiona el botón de inicio de sesión.

    2. Proporcione un identificador de grupo de identidades, un nombre de rastreador y un nombre de mapa.

    3. Vuelva a pulsar Iniciar sesión para terminar.

  • Administrar filtros:

    Abra la pantalla de configuración y realice lo siguiente:

    1. Activa o desactiva los filtros mediante la interfaz de usuario del conmutador.

    2. Actualiza los filtros de tiempo y distancia cuando sea necesario.

  • Operaciones de seguimiento:

    Abra la pantalla de rastreo y realice lo siguiente:

    • Puede iniciar y detener el rastreo en primer plano, en segundo plano o en modo de ahorro de batería pulsando los botones correspondientes.