Habilita la API de Geospatial para tu app de NDK de Android (C)

Establece la configuración de tu app para que pueda usar la API de Geospatial.

Requisitos previos

Asegúrate de comprender los conceptos fundamentales de RA y cómo configurar una sesión de ARCore antes de continuar.

Si quieres ejecutar una app de ejemplo que demuestre la funcionalidad que se describe aquí, consulta la Guía de inicio rápido de ARCore Geospatial para Android para Java. La app de muestra de la guía de inicio rápido está escrita en Java. Las muestras de código de este documento son para la misma funcionalidad escrita en C.

Consulta la Introducción a la API de Geospatial para obtener más información información sobre la API de Geospatial.

Si es la primera vez que desarrollas con ARCore, consulta Primeros pasos. para obtener información sobre requisitos de software y hardware, requisitos más información específica de las plataformas que utilizas.

Asegúrate de que tu entorno de desarrollo cumpla con los requisitos del SDK de ARCore, como que se describe en la guía de inicio rápido para Java.

Habilita la API de ARCore

Antes de usar el sistema de posicionamiento visual (VPS) en tu aplicación, primero debes Habilita la API de ARCore. en un proyecto de Google Cloud nuevo o existente. Este servicio es responsable alojar, almacenar y resolver anclas geoespaciales.

Se prefiere la autorización sin clave, aunque también se admite la autorización de la clave de API.

Agrega las bibliotecas requeridas a tu app

Después de autorizar tu app para que llame a la API de ARCore, debes agregar bibliotecas a Habilita las funciones geoespaciales en tu app.

En el archivo build.gradle de tu app, configura los Servicios de Google Play para incluir el Biblioteca de ubicaciones de servicios.

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)'
}

Habilita las capacidades geoespaciales en la configuración de la sesión

Antes de crear la sesión, cambia el GeospatialMode en tu sesión configuración en ENABLED:

// Create a session config.
ArConfig* ar_config = NULL;
ArConfig_create(ar_session, &ar_config);

// Enable the Geospatial API.
ArConfig_setGeospatialMode(ar_session, ar_config, AR_GEOSPATIAL_MODE_ENABLED);
CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS);

// Release config resources.
ArConfig_destroy(ar_config);

Mientras el modo geoespacial está establecido en ENABLED, la aplicación puede obtener información geográfica del sistema de posicionamiento visual (VPS).

Solicitar al usuario que permita el uso de datos del dispositivo

Las apps que usan la API de ARCore Geospatial deben presentar al usuario un mensaje para hacer lo siguiente: reconocen y permiten el uso de datos de su dispositivo. Consulta Requisitos de privacidad del usuario para obtener más información información.

Comprueba la compatibilidad de los dispositivos

No todos los dispositivos compatibles con ARCore también admiten la API de Geospatial, ya que se describe en la guía de inicio rápido. para Java.

Para comprobar la compatibilidad del dispositivo del usuario, llama a ArSession_isGeospatialModeSupported() Si el resultado es falso, no intentes configurar la sesión (a continuación), ya que por lo que hará que ArStatus informe un AR_ERROR_UNSUPPORTED_CONFIGURATION

Solicita permisos de ubicación al usuario durante el tiempo de ejecución

Tu app debe solicitar permisos de ubicación durante el tiempo de ejecución.

Para usar la API de ARCore Geospatial, tu app debe registrar lo siguiente permisos adicionales:

  • ACCESS_FINE_LOCATION para determinar con precisión la ubicación del usuario.

  • ACCESS_COARSE_LOCATION para determinar de manera imprecisa la ubicación del usuario y cumplir con los requisitos de privacidad del usuario. Sin embargo, no se puede configurar la API de Geospatial para trabajar con la ubicación aproximada, y las solicitudes a la API fallarán cuando el usuario tenga configura este permiso. Obtenga más información a continuación.

  • ACCESS_INTERNET para comunicarte con el servicio de la API de 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>

En dispositivos con Android 12 o versiones posteriores, haz lo siguiente: los usuarios pueden solicitar a los que tu app solo tenga acceso ubicación aproximada información. Para cumplir con esta solicitud, tu app debe tener la ACCESS_COARSE_LOCATION permiso configurado, junto con ACCESS_FINE_LOCATION, como se muestra arriba. Debes configura ambos permisos de ubicación.

Sin embargo, cuando los usuarios especifican la ubicación aproximada, no es posible para que la API obtenga la ubicación precisa que requiere. El servicio geoespacial no permitir que se configure si tu app le proporciona solo la ubicación aproximada. Tu app no puede usar la API de Geospatial con la ubicación aproximada.

Comprueba la disponibilidad de datos geoespaciales en la ubicación actual del dispositivo

Como la API de Geospatial usa una combinación de VPS y GPS para determinar una pose geoespacial, la API se puede usar siempre y cuando el dispositivo pueda determinar su ubicación. En áreas con baja precisión de GPS, como espacios interiores y entornos urbanos densos, la API utilizará la cobertura del VPS para generar poses de alta precisión. En condiciones típicas, se espera que el VPS proporcione una precisión posicional de aproximadamente 5 metros y una precisión de rotación de 5 grados. Usa ArSession_checkVpsAvailabilityAsync() para determinar si una ubicación determinada tiene cobertura de VPS.

La API de Geospatial también se puede usar en áreas que no tienen cobertura VPS. En ambientes al aire libre con pocas obstrucciones por encima o ninguna, el GPS puede ser suficiente para generar una postura con alta precisión.

¿Qué sigue?