Criar um aplicativo Android - Amazon Location Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Criar um aplicativo Android

Siga esses procedimentos para criar um aplicativo iOS usando o Amazon Location Service.

Clone os arquivos do projeto de GitHub.

Você pode gerar recursos do Amazon Location Service quando sua AWS conta estiver pronta. Esses recursos serão essenciais para executar os trechos de código fornecidos.

nota

Se você ainda não criou uma AWS conta, crie uma AWS conta.

Para começar, você precisará criar um ID de banco de identidades do Amazon Cognito, use o seguinte procedimento:

  1. No AWS console, navegue até o serviço Amazon Cognito, selecione grupos de identidades no menu do lado esquerdo e selecione Criar grupo de identidades.

  2. Verifique se a opção Acesso de convidado está marcada e pressione Avançar para continuar.

  3. Escolha um perfil do IAM existente ou crie um novo.

  4. Insira o nome do Identity Pool e certifique-se de que o Identity Pool tenha acesso aos (geo) recursos de localização da Amazon para o mapa e o rastreador que você criará no próximo procedimento.

Agora você precisa criar e estilizar um mapa no console de localização da AWS Amazon, use o seguinte procedimento:

  1. Navegue até a seção Mapas no console de localização da Amazon e selecione Create Map para visualizar os estilos de mapa disponíveis.

  2. Dê um nome e uma descrição ao novo recurso de mapa. Registre o nome que você atribui ao recurso de mapa, conforme ele será usado posteriormente no tutorial.

  3. Ao escolher um estilo de mapa, considere o provedor de dados do mapa. Consulte a seção 82 dos Termos de serviço da AWS para obter mais detalhes.

  4. Aceite os termos e condições de localização da Amazon e selecione Criar mapa. Depois que o mapa for criado, você poderá interagir com o mapa ampliando, diminuindo ou fazendo uma panorâmica em qualquer direção.

Para criar um rastreador usando o console do Amazon Location

  1. Abra o console do Amazon Location Service.

  2. No painel de navegação à esquerda, selecione Rastreadores.

  3. Selecione Criar rastreador.

  4. Preencha os campos obrigatórios:

  5. Em Filtragem de posições, escolha a opção que melhor se adequa à forma como você pretende usar seu recurso de rastreador. Se você não definir a filtragem de posição, a configuração padrão será. TimeBased Para obter mais informações, consulte Trackers neste guia e PositionFiltering na Amazon Location Service Trackers API Reference.

  6. Escolha Criar rastreador para finalizar.

Ao criar uma coleção de cercas geográficas, você pode usar o console, a API ou a CLI. Os procedimentos a seguir demonstram esse processo.

Para criar uma coleção de geocercas usando o console Amazon Location:

  1. Abra o console do Amazon Location Service em https://console.aws.amazon.com/location/.

  2. No painel de navegação esquerdo, escolha Geofence Collections.

  3. Selecione Criar coleção de geocercas.

  4. Forneça um nome e uma descrição para a coleção.

  5. Em EventBridge regra com CloudWatch como destino, você pode criar uma EventBridge regra opcional para começar a reagir aos eventos de delimitação geográfica. Isso permite que o Amazon Location publique eventos no Amazon CloudWatch Logs.

  6. Selecione Criar coleção de geocercas.

Crie uma coleção de cercas geográficas usando a localização da Amazon: APIs

Use a CreateGeofenceCollection operação da Amazon Location Geofences APIs. O exemplo a seguir usa uma solicitação de API para criar uma coleção de geocercas chamada GOECOLLECTION_NAME.

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

Crie uma coleção de cercas geográficas usando AWS CLI os comandos:

Use o comando create-geofence-collection. O exemplo a seguir usa um AWS CLI para criar uma coleção de geofence chamada. GOECOLLECTION_NAME

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

Para vincular um rastreador a uma coleção de cercas geográficas, você pode usar o console, a API ou a CLI. Os procedimentos a seguir demonstram esse processo.

Vincular um recurso de rastreador a uma coleção de geocercas usando o console do Amazon Location Service:

  1. Abra o console do Amazon Location.

  2. No painel de navegação à esquerda, selecione Rastreadores.

  3. Em Rastreadores de dispositivos, selecione o link do nome do rastreador de destino.

  4. Em Coleções de geocercas vinculadas, selecione Vincular coleção de geocercas.

  5. Na janela Coleção de geocercas vinculadas, selecione uma coleção de geocercas no menu suspenso.

  6. Escolha Vincular.

  7. Depois de vincular o recurso de rastreador, ele receberá um status de Ativo.

Vincule um recurso rastreador a uma coleção de cercas geográficas usando a localização da Amazon: APIs

Use a AsssociateTrackerConsumer operação dos Amazon Location Trackers APIs. O exemplo a seguir usa uma solicitação de API ExampleTracker associada a uma coleção de cercas geográficas usando seu Amazon Resource Name (ARN).

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

Vincule um recurso rastreador a uma coleção de cercas geográficas usando comandos: AWS CLI

Use o comando associate-tracker-consumer . O exemplo a seguir usa um AWS CLI para criar uma coleção de geofence chamada. GOECOLLECTION_NAME

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

Crie uma função do Lambda:

Para criar uma conexão entre AWS IoT Core o Amazon Location Service, você precisa de uma AWS Lambda função para processar mensagens encaminhadas por EventBridge CloudWatch eventos. Essa função extrairá todos os dados posicionais, os formatará para o Amazon Location Service e os enviará por meio da API do rastreador do Amazon Location. Você pode criar essa função por meio do AWS Lambda console ou usar o AWS Command Line Interface (AWS CLI) ou AWS Lambda APIs o. Para criar uma função do Lambda que publique atualizações de posição no Amazon Location usando o console:

  1. Abra o AWS Lambda console em https://console.aws.amazon.com/lambda/.

  2. No painel de navegação à esquerda, selecione Funções.

  3. Selecione Criar função e confirme se Autor do zero está selecionado.

  4. Preencha as seguintes caixas:

    • um nome de função

    • para a opção Runtime, escolha Node.js 16.x.

  5. Selecione Criar função.

  6. Selecione a guia Código para abrir o editor.

  7. Substitua o código do espaço reservado em index.js com o seguinte:

    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. Selecione Implantar para salvar a função atualizada.

  9. Escolha a guia Configuração.

  10. Na seção Acionadores, clique em Adicionar gatilho.

  11. Selecione EventBridge (CloudWatch Eventos) no campo Fonte.

  12. Selecione a opção de rádio `Regras existentes`.

  13. Insira o nome da regra assim `AmazonLocationMonitor-GEOFENCECOLLECTION_NAME`.

  14. Clique no botão Adicionar.

  15. Isso também anexará `declarações de política baseadas em recursos' na guia de permissões

Cliente de teste MQTT

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

  2. No painel de navegação esquerdo, escolha o cliente de teste MQTT.

  3. Você verá uma seção intitulada Cliente de teste MQTT, na qual você pode configurar sua conexão MQTT.

  4. Depois de definir as configurações necessárias, clique no botão Connect para estabelecer uma conexão com o broker MQTT usando os parâmetros fornecidos.

  5. Anote o valor do Endpoint.

Depois de conectado, você pode se inscrever nos tópicos do MQTT ou publicar mensagens nos tópicos usando os respectivos campos de entrada fornecidos na interface do cliente de teste do MQTT. Em seguida, você anexará a Política do MQTT:

  1. No menu do lado esquerdo, em Gerenciar, expanda a opção Segurança e clique em Políticas.

  2. Clique no botão Criar política.

  3. Insira um nome de política.

  4. Em Documento de política, selecione a guia JSON.

  5. Copie e cole a política mostrada abaixo, mas certifique-se de atualizar todos os elementos com seu REGION e 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" } ] }
    nota

    Registre o nome da política e o nome do tópico para uso no próximo procedimento.

  6. Selecione o botão Criar para finalizar.

Depois de concluir o procedimento anterior, agora você atualizará as permissões para a função de convidado da seguinte forma:

  1. Navegue até o Amazon Cognito e abra seu banco de identidades. Em seguida, vá para o acesso do usuário e selecione a função de convidado.

  2. Clique nas políticas de permissão para ativar a edição.

    { '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. Com as mudanças de política acima, todos os AWS recursos necessários agora estão configurados adequadamente para o aplicativo.

  1. Abra o Android Studio e selecione Novo e, em seguida, Projeto no Controle de versão.

  2. Navegue até o menu Arquivo no canto superior esquerdo do Android Studio.

  3. Selecione “Novo” no menu suspenso.

  4. Escolha “Projeto a partir do controle de versão”.

  5. Insira o URL do repositório Na caixa de diálogo exibida, localize o campo marcado como “URL”.

  6. Copie e cole o seguinte URL do aplicativo de amostra nesse campo: https://github.com/aws-geospatial/amazon-location-samples-android.git

  7. Decida o diretório em que você deseja clonar o repositório. Use o diretório padrão ou opte por um local personalizado.

  8. Depois de definir o URL do repositório e as preferências do diretório, clique no botão “Clonar”. O Android Studio continuará clonando o repositório no local especificado.

  9. Agora você clonou o aplicativo em sua máquina e pode começar a usá-lo.

Para usar a amostra, siga estes procedimentos:

  • Crie um custom.properties:

    Para configurar seu arquivo custom.properties, siga estas etapas:

    1. Abra o seu editor de texto ou IDE de preferência.

    2. Criar um novo arquivo.

    3. Salve o arquivo com o nome custom.properties.

    4. Atualize o custom.properties com o exemplo de código a seguir e substitua o MQTT_END_POINT POLICY_NAMEGEOFENCE_COLLECTION_NAME,, e TOPIC_TRACKER pelos valores reais:

      MQTT_END_POINT=xxxxxxxxxxxxx-xxx.xxx.us-east-1.amazonaws.com POLICY_NAME=xxxxxxxxx GEOFENCE_COLLECTION_NAME=xxxxxxxxxxxxxxxxx TOPIC_TRACKER=xxxxxxxxxx
    5. Limpe e reconstrua o projeto. Após isso, você poderá executar o projeto.

  • Faça login:

    Para fazer login na aplicação, siga as etapas abaixo:

    1. Pressione o botão Entrar.

    2. Forneça um ID do banco de identidades, um nome do rastreador e um nome do mapa.

    3. Pressione Entrar novamente para finalizar.

  • Gerenciar filtros:

    Abra a tela de configuração e faça o seguinte:

    1. Alterne os filtros on/off usando a interface do switch.

    2. Atualize os filtros de tempo e distância quando necessário.

  • Operações de rastreamento:

    Abra a tela de rastreamento e faça o seguinte:

    • Você pode iniciar e interromper o rastreamento em primeiro plano, segundo plano ou no modo de economia de bateria pressionando os respectivos botões.