Configuração Android

< Voltar

Bem-vindo à documentação oficial de Como implementar a SDK Locator Android.

A SDK segue a definição descrita em LocatorService.

Release Notes do Android descrito em Release Notes Androidarrow-up-right.

Configuração do projeto (Gradle)

Antes de utilizar a SDK, é necessário configurar o projeto Android com os plugins e dependências corretos.

Versões e plugins (libs.versions.toml)

No catálogo de versões (libs.versions.toml), adicione (ou ajuste) as seguintes entradas:

[plugins]
android-library = { id = "com.android.library", version.ref = "agp" }
jetbrains-kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
ksp = { id = "com.google.devtools.ksp", version.ref = "kspVersion" }
google-services = { id = "com.google.gms.google-services", version.ref = "googleSvc" }

[versions]
agp = "8.13.1"
kotlin = "2.2.21"
kspVersion = "2.3.1"
googleSvc = "4.4.4"

Plugins no build.gradle de projeto

No arquivo build.gradle.kts (raiz do projeto), registre os plugins:

Plugins no settings.gradle de projeto

No arquivo settings.gradle.kts (raiz do projeto), adicione as configurações da Azure:

Dependências da SDK (módulo app)

No build.gradle.kts do módulo da aplicação (por exemplo, app), adicione as dependências da SDK usando o catálogo:

Garanta também que as versões e mapeamentos das bibliotecas estejam definidos em libs.versions.toml:

Plugins e configurações no build.gradle do app

No build.gradle.kts do módulo da aplicação, aplique os plugins necessários:

E configure o bloco android com as opções exigidas pela SDK:

Inicialização e Configuração

Para utilizar a SDK, é necessário realizar a inicialização, obter a instância e configurá-la. O processo completo pode ser feito através de uma função unificada que recebe um LocatorConfig e executa todos os passos sequencialmente.

Passo 1: Inicialização no Application

Primeiro, inicialize a SDK no Application da sua aplicação:

Passo 2: Configuração Completa

Após a inicialização, você pode configurar a SDK de forma unificada. A função abaixo recebe um LocatorConfig e opcionalmente um LocatorIntegration, executando todos os passos necessários:

Exemplo de Uso

Passo 3: Iniciar Modo Observável

Para a SDK Locator entrar no modo observável, coleta e envio em tempo real utilizando o parâmetro collectObservedModeIntervalMillis do objeto LocatorConfig como referência de intervalo de coleta.

Estrutura do LocatorConfig

Integrador (LocatorIntegration)

O Integrador faz uso da interface LocatorIntegration:

Por padrão, a SDK utiliza o DefaultLocatorSDKIntegrationApiImpl. Caso precise de uma implementação customizada, apenas implemente a interface e passe como parâmetro na função setupLocatorSDK.

Exceções

Iniciando a Coleta de Localizações

Após a configuração, você pode iniciar a coleta de localizações chamando o método start() da SDK. Isso pode ser feito automaticamente através do parâmetro autoStart = true na função setupLocatorSDK, ou manualmente:

Comandos

Para validar se um comando deve ser executado pela SDK Locator, faça uso do método isLocatorSDKCommand. Caso seja de propriedade da SDK, utilize convertLocatorSDKCommand para converter a mensagem e execute para que a SDK rode o comando. Ambos os métodos são pertencentes a classe LocatorSDK como métodos do companion object, sendo assim não há necessidade de uma instância para realizar a chamada dos métodos.

Processo troca de dispositivo SDK

Após confirmação de troca no app, chamar método destroy da SDK para realizar limpeza dos dados, parar processos de coleta, cercas, detecção de queda e envio de dados via MQTT.

Notificar novo dispositivo para o mesmo realizar o init da SDK, passar a config inicial, executar o start e chamar o syncAll para realizar a busca de todas as configurações de funcionamento da SDK no novo dispositivo. Para este processo olhar trecho de código descrito em Passo 2: Configuração Completa, adicionar apenas a chamada de método de sync all após a configuração inicial.

Tratamento das permissões de start da SDK

Adicionado um tratamento especial para permissões na inicialização da coleta de localizações via método start() da SDK.

Este comportamento consiste em, validar apenas permissões necessárias para a realização de coletas, permissões relacionadas a serviços de geolocalização e foreground services, excluindo deste start() permissões relacionadas a outras funcionalidades, como por exemplo, captura de áudio.

Importante ressaltar que, o método pendingPermissions ainda retorna todas as permissões necessárias para a SDK funcionar em sua plenitude, porém permissões relacionadas com áudio, não terão interferência na coleta de localizações.

O impacto do não aceite destas permissões são:

  • Ao entrar no modo SOS, caso a/as permissão/permissões não sejam concedidas, a SDK irá enviar a entrada no modo SOS e enviará também um evento que não foi possível realizar a captura de áudios por conta da permissão/permissões.

Funcionamento da gravação de áudio após a inicialização do dispositivo modo SOS (opcional)

Devido a restrições do sistema operacional Android é inviável iniciar uma coleta de áudio após a inicialização do dispositivo.

Quando o dispositivo for desligado e o SDK Mode for SOS, o comportamento da SDK é subir o serviço de coleta em tempo real, enviar um evento para o MQTT que o dispositivo entrou em SOS e iniciar a gravação, entretanto por restrições não será possível iniciar a gravação de áudio, sendo necessário o usuário abrir o app uma vez para termos acesso ao MIC do dispositivo.

Tendo este comportamento, a SDK Locator ao receber do sistema o termino da inicialização, iniciará a coleta de localizações em tempo real, envio do evento para o MQTT e postará uma notificação com ação de abertura do app com dados de deeplink configuráveis no parâmetro audioRecord do objeto LocatorConfig.

Fluxo da gravação de áudio é opcional, é possível não passar o parâmetro bootNotification dentro de audioRecord do objeto LocatorConfig ou apenas setar como null.

Uso do deeplinkKey e deeplinkValue

Atualizações periódicas de cercas (Geo Fences)

A partir da versão 2.1.0 a SDK possuirá um controle de atualizações periódicas das cercas, o tempo das atualizações é definido dentro do objeto LocatorProcessConfig com nome syncGeofencesIntervalMillis, caso nenhum valor seja passado, a aplicação usará um valor padrão de 3 horas.

O campo LocatorProcessConfig é descrito dentro do LocatorConfig como process.

Em caso de falha no sync, a SDK tentará novamente em tempo reduzido, 30 minutos, após o sucesso voltará a usar o valor descrito em syncGeofencesIntervalMillis.

Pontos de Interesse

Versão 2.1.0

  • Adição da permissão POST_NOTIFICATIONS no pacote da SDK, isto é devido ao uso do envio de notificações no fluxo de gravação de áudio após o boot do dispositivo em modo SOS, sendo necessário esta permissão para execução do processo. Veja as permissões aqui.

< Voltar

Last updated