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 estes procedimentos para criar uma aplicação para iOS usando o Amazon Location Service.

Clone os arquivos do projeto no GitHub.

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

nota

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

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

  1. No console da AWS, navegue até o serviço Amazon Cognito e selecione Bancos de identidades no menu do lado esquerdo e, em seguida, selecione Criar banco 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 banco de identidades e certifique-se de que o banco de identidades tenha acesso aos recursos de (geo) do Amazon Location para o mapa e o rastreador que você criará no próximo procedimento.

Em seguida, você precisa criar e estilizar um mapa no console do Amazon Location da AWS, usando o seguinte procedimento:

  1. Navegue até a seção Mapas do console do Amazon Location e selecione Criar mapa 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ê atribuir 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 do Amazon Location e selecione Criar mapa. Após criar o mapa, você pode interagir com ele ampliando, reduzindo o zoom 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ções, a configuração padrão será TimeBased. Para obter mais informações, consulte Rastreadores neste guia e PositionFiltering na Referência de APIs para rastreadores do Amazon Location Service.

  6. Escolha Criar rastreador para finalizar.

Quando for criar uma coleção de geocercas, 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 à esquerda, selecione Coleções de geocercas.

  3. Selecione Criar coleção de geocercas.

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

  5. De acordo com a regra do EventBridge com o CloudWatch como alvo, você pode criar uma regra opcional do EventBridge para começar a reagir aos eventos das geocercas. Isso permite que o Amazon Location publique eventos no Amazon CloudWatch Logs.

  6. Selecione Criar coleção de geocercas.

Criar uma coleção de geocercas usando as APIs do Amazon Location:

Use a operação CreateGeofenceCollection das APIs de geocercas do Amazon Location. 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 geocercas usando comandos da AWS CLI:

Use o comando create-geofence-collection. O exemplo a seguir usa uma AWS CLI para criar uma coleção de geocercas 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 geocercas, 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.

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

Use a operação AsssociateTrackerConsumer das APIs de Rastreadores do Amazon Location. O exemplo a seguir usa uma solicitação de API que associa o ExampleTracker a uma coleção de geocercas usando seu nome do recurso da Amazon (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 de rastreador a uma coleção de geocercas usando comandos da AWS CLI:

Use o comando associate-tracker-consumer . O exemplo a seguir usa uma AWS CLI para criar uma coleção de geocercas 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 e o Amazon Location Service, você precisa de uma função AWS Lambda para processar as mensagens encaminhadas pelos eventos EventBridge CloudWatch. 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 console AWS Lambda ou usar o AWS Command Line Interface (AWS CLI) ou as APIs do AWS Lambda. Para criar uma função do Lambda que publique atualizações de posição no Amazon Location usando o console:

  1. Abra o console AWS Lambda 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, selecione Node.js 16.x.

  5. Escolha a opção 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 pelo 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, escolha Adicionar acionador.

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

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

  13. Por exemplo, insira o nome “AmazonLocationMonitor-GEOFENCECECOLLECTION_NAME`.

  14. Clique no botão Adicionar.

  15. Isso também anexará `Resource-based policy statements` (declarações de políticas baseadas em recursos) na guia de permissões

Cliente de teste MQTT

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

  2. No painel de navegação, escolha 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.

Uma vez conectado, você pode assinar os 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 usar 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 a aplicação.

  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. No menu suspenso, selecione “Novo”.

  4. Escolha “Projeto no 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 da aplicação de exemplo neste campo: https://github.com/aws-geospatial/amazon-location-samples-android.git

  7. Decida em qual diretório 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_NAME, GEOFENCE_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. Ative ou desative os filtros 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.