Ativar a API Geospatial no app Android (Kotlin/Java)

Defina as configurações do app para que ele possa usar a API Geospatial.

Pré-requisitos

Entenda os conceitos fundamentais de RA. e como configurar uma sessão do ARCore antes de continuar.

App de exemplo e codelab

Este vídeo mostra as etapas para criar um app que exibe imagens geoespaciais dados e posiciona conteúdo em locais reais usando a API Geospatial.

Você também pode seguir o codelab Geoespacial. documentação para as mesmas etapas. Para executar o app de exemplo criado no vídeo, consulte o Guia de início rápido do ARCore Geospatial.

Consulte a Introdução à API Geospatial para conhecer informações sobre a API Geospatial.

Se você está começando a desenvolver com o ARCore, consulte Primeiros passos para obter informações sobre requisitos de software e hardware, pré-requisitos e outras informações específicas das plataformas que você está usando.

Certifique-se de que seu ambiente de desenvolvimento atenda aos requisitos do SDK do ARCore, pois descritos no Guia de início rápido.

Ativar a API ARCore

Antes de usar o Sistema de Posicionamento Visual (VPS, na sigla em inglês) no seu app, você precisa Ative a API ARCore em um projeto novo ou atual do Google Cloud. Esse serviço é responsável pela hospedar, armazenar e resolver âncoras geoespaciais.

A autorização sem chave é preferível, mas a autorização de chave de API também é aceita.

Adicionar as bibliotecas necessárias ao app

Depois de autorizar seu app a chamar a API ARCore, você precisa adicionar bibliotecas ao ativar recursos geoespaciais no app.

No arquivo build.gradle do seu app, configure o Google Play Services para incluir a API Play Biblioteca de localização de serviços.

dependencies {
  // Apps must declare play-services-location version >= 16.
  // In the following line, substitute `16 (or later)` with the latest version.
  implementation 'com.google.android.gms:play-services-location:16 (or later)'
}

Ativar recursos geoespaciais na configuração da sessão

Antes de criar a sessão, mude o GeospatialMode nela. para ENABLED:

Java

Config config = session.getConfig();
config.setGeospatialMode(Config.GeospatialMode.ENABLED);
session.configure(config);

Kotlin

// Enable the Geospatial API.
session.configure(session.config.apply { geospatialMode = Config.GeospatialMode.ENABLED })

Com o modo geoespacial definido como ENABLED, o aplicativo pode acessar informações geográficas do sistema de posicionamento visual (VPS).

Solicitar que o usuário permita o uso de dados do dispositivo

Os apps que usam a API ARCore Geospatial precisam apresentar ao usuário uma solicitação para confirmar e permitir o uso de dados do dispositivo. Consulte Requisitos de privacidade do usuário para mais informações imprecisas ou inadequadas.

Verificar a compatibilidade do dispositivo

Nem todos os dispositivos com suporte ao ARCore também oferecem suporte à API Geospatial, como descritos no guia de início rápido.

Para verificar a compatibilidade do dispositivo do usuário, chame Session.checkGeospatialModeSupported() Se retornar falso, não tente configurar a sessão (abaixo), já que o que gera UnsupportedConfigurationException

Pedir permissões de localização ao usuário durante a execução

Seu app precisa solicitar permissões de localização durante a execução.

Para usar a API ARCore Geospatial, seu app precisa registrar o seguinte permissões extras:

  • ACCESS_FINE_LOCATION para determinar com precisão a localização do usuário.

  • ACCESS_COARSE_LOCATION para determinar a localização do usuário com precisão e obedecer às requisitos de privacidade do usuário. No entanto, a API Geospatial não pode ser configurada para trabalhar com a localização aproximada, e as solicitações da API vão falhar quando o usuário defina essa permissão. Veja mais informações a seguir.

  • ACCESS_INTERNET para entrar em contato com o serviço da API ARCore Geospatial.

<manifest ... >
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  <uses-permission android:name="android.permission.INTERNET" />
</manifest>

Em dispositivos com o Android 12 ou mais recente, os usuários podem solicitar que seu app pode acessar apenas local aproximado informações imprecisas ou inadequadas. Para atender a essa solicitação, o app precisa ter a ACCESS_COARSE_LOCATION permissão configurada, junto com ACCESS_FINE_LOCATION, como mostrado acima. Você deve configure as duas permissões de localização.

No entanto, quando os usuários especificam a localização aproximada, isso impede que os registros Geospatial para obter o local exato necessário. O serviço Geospatial não pode ser configurado se o app fornecer apenas a localização aproximada. O app não pode usar a API Geospatial com a localização aproximada.

Conferir a disponibilidade geoespacial no local atual do dispositivo

Como a API Geospatial usa uma combinação de VPS e GPS para determinar uma pose Geospatial, a API pode ser usada desde que o dispositivo possa determinar sua localização. Em áreas com baixa precisão do GPS, como espaços internos e ambientes urbanos densos, a API contará com a cobertura do VPS para gerar poses de alta precisão. Em condições típicas, o VPS pode fornecer precisão posicional de aproximadamente 5 metros e precisão rotacional de 5 graus. Use Session.checkVpsAvailabilityAsync() para determinar se um determinado local tem cobertura de VPS.

A API Geospatial também pode ser usada em áreas que não têm cobertura de VPS. Em ambientes externos com pouca ou nenhuma obstrução suspensa, o GPS pode ser suficiente para gerar uma pose com alta precisão.

A seguir