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.
Temas
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:
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. Asegúrese de que Guest Access esté marcada y pulse Siguiente para continuar.
A continuación, cree una nueva función de IAM o utilice una función de IAM existente.
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:
Ve a la sección Mapas
de la consola Amazon Location y selecciona Create Map. 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.
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. 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:
Abre la sección Mapas
en la consola de Amazon Location. Seleccione Crear rastreador.
Rellena los campos obligatorios. Anota el nombre del rastreador, ya que aparecerá como referencia a él en este tutorial.
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 es
TimeBased
. Para obtener más información, consulta Rastreadores y PositionFilteringen la referencia de la API de ubicación de Amazon.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:
Abre la sección Colecciones de Geofence
de la consola de Amazon Location. Seleccione Crear colección de geovallas.
Escriba un nombre y una descripción para la colección.
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.
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.
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.GEOCOLLECTION_NAME
aws location \ create-geofence-collection \ --collection-name "ExampleGeofenceCollection" \ --description "Shopping center geofence collection" \ --tags Tag1=Value1
Vincular un rastreador a una colección de geovallas
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:
Abre la consola de Amazon Location.
En el panel de navegación izquierdo, elija Rastreadores.
En Device Trackers, selecciona el enlace con el nombre del rastreador objetivo.
En Colecciones de geovallas vinculadas, elija Vincular colección de geovallas.
En la ventana Colección de geovallas vinculadas, seleccione una colección de geovallas en el menú desplegable.
Elija Vincular.
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:
Abra la consola de
. En el panel de navegación izquierdo, elija Funciones.
A continuación, elija Crear función y asegúrese de que esté seleccionada la opción Autor desde cero.
proporcione un nombre de función y, para la opción Runtime, elija Node.js 16.x.
Elija Crear función.
Abra la pestaña Código para acceder al editor.
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 } }); } }); }
Pulse el botón Desplegar para guardar la función actualizada.
A continuación, abra la pestaña Configuración.
En la sección Activadores, pulse el botón Añadir disparador.
Seleccione EventBridge (CloudWatch Eventos) en el campo Fuente.
Seleccione la opción Reglas existentes.
Introduzca el nombre de la regla, por ejemplo
AmazonLocationMonitor-GEOFENCECOLLECTION_NAME
.Pulse el botón Añadir.
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:
Abra el https://console.aws.amazon.com/iot/
. En el panel de navegación izquierdo, seleccione el cliente de prueba MQTT.
Verá una sección titulada Cliente de prueba MQTT en la que puede configurar su conexión MQTT.
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.
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.
En el menú de la izquierda, en Administrar, expanda la opción Seguridad y haga clic en Políticas.
Haga clic en el botón Crear política.
Escriba un nombre para la política.
En el documento de política, seleccione la pestaña JSON.
Copia y pega la política que se muestra a continuación, pero asegúrate de actualizar todos los elementos con tu
manoREGION
: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" } ] }Selecciona el botón Crear para terminar.
Tras completar el procedimiento anterior, ahora actualizará los permisos del rol de invitado de la siguiente manera:
Navegue hasta Amazon Cognito y abra su grupo de identidades. A continuación, vaya al acceso de usuario y seleccione el rol de invitado.
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' } ] }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
Clona este repositorio: https://github.com/aws-geospatial/ amazon-location-samples-android /tree/main/ tracking-with-geofence-notifications
en tu máquina local. Abre el
AmazonSampleSDKApp
proyecto en Android Studio.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:Abre tu editor de texto o IDE preferido.
Cree un archivo nuevo.
Guarde el archivo con el nombre
custom.properties
.Actualízalo
custom.properties
con el siguiente ejemplo de código y reemplazaMQTT_END_POINT
POLICY_NAME
GEOFENCE_COLLECTION_NAME
, y por losTOPIC_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
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:
Presiona el botón de inicio de sesión.
Proporcione un identificador de grupo de identidades, un nombre de rastreador y un nombre de mapa.
Vuelva a pulsar Iniciar sesión para terminar.
Administrar filtros:
Abra la pantalla de configuración y realice lo siguiente:
Activa o desactiva los filtros mediante la interfaz de usuario del conmutador.
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.