Android NDK 앱에 Geospatial API 사용 설정 (C)

Geospatial API를 사용할 수 있도록 앱 설정을 구성합니다.

기본 요건

기본 AR 개념을 이해합니다. ARCore 세션을 구성하는 방법을 알아보세요.

설명된 기능을 보여주는 샘플 앱을 실행하려는 경우 자세한 내용은 Android용 ARCore 지리정보 빠른 시작 살펴보겠습니다 빠른 시작의 샘플 앱은 Java로 작성되었습니다. 코드 샘플 C로 작성된 동일한 기능을 위한 것입니다.

자세한 내용은 자세한 내용은 Geospatial API 소개를 참조하세요. Geospatial API에 대한 정보

ARCore로 개발하는 것이 처음인 경우 시작하기를 참고하세요. 소프트웨어 및 하드웨어 요구 사항, 기본 요건 및 기타 정보를 수집해야 합니다.

개발 환경이 ARCore SDK 요구사항을 충족하는지 확인합니다. Java 빠른 시작에 설명되어 있습니다.

ARCore API 사용 설정

앱에서 VPS (Visual Positioning System)를 사용하려면 먼저 다음 작업을 완료해야 합니다. ARCore API를 사용 설정합니다. 새 Google Cloud 프로젝트에서 생성할 수 있습니다 이 서비스는 지리 공간 앵커를 호스팅, 저장, 확인

키 없는 승인을 사용하는 것이 좋지만 API 키 승인도 지원됩니다.

앱에 필수 라이브러리 추가

앱이 ARCore API를 호출하도록 승인한 후에는 앱에서 지리정보 기능 사용 설정

앱의 build.gradle 파일에서 Play를 포함하도록 Google Play 서비스를 설정합니다. 서비스 위치 라이브러리.

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

세션 구성에서 지리정보 기능 사용 설정

세션을 만들기 전에 세션의 GeospatialMode를 변경합니다. 구성을 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);

지리정보 모드가 ENABLED로 설정되어 있으면 애플리케이션에서 위치정보를 수집, 수집, 분석할 수 있습니다.

사용자에게 기기 데이터 사용을 허용하라는 메시지 표시

ARCore Geospatial API를 사용하는 앱은 사용자에게 사용자의 기기에서 데이터를 사용하고 사용하도록 허용할 수 있습니다. 자세한 내용은 자세한 내용은 사용자 개인 정보 보호 요구사항을 참고하세요 확인할 수 있습니다

기기 호환성 확인

ARCore를 지원하는 모든 기기가 Geospatial API를 지원하는 것은 아닙니다. 빠른 시작에 설명되어 있습니다. 살펴보겠습니다

사용자 기기의 호환성을 확인하려면 다음을 호출합니다. ArSession_isGeospatialModeSupported() false가 반환되면 아래와 같이 세션을 구성하지 마세요. 이렇게 하면 ArStatusAR_ERROR_UNSUPPORTED_CONFIGURATION

런타임 시 사용자에게 위치 정보 액세스 권한 요청

앱에서 런타임 시 위치 정보 액세스 권한을 요청해야 합니다.

ARCore Geospatial API를 사용하려면 앱에서 다음 추가 권한:

  • ACCESS_FINE_LOCATION 드림 사용자의 위치를 정확하게 파악할 수 있습니다.

  • ACCESS_COARSE_LOCATION 드림 사용자 개인 정보 보호 요건 그러나 Geospatial API를 구성할 수 없습니다. 을 사용할 수 있으며, 사용자가 이 권한을 설정할 수 있습니다. 자세한 정보는 아래를 참고하세요.

  • ACCESS_INTERNET 드림 ARCore Geospatial API 서비스에 문의하세요.

<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>

Android 버전 12 이상을 실행하는 기기에서 사용자가 Google에 내 앱이 앱에만 대략적인 위치 확인할 수 있습니다 이 요청을 수용하려면 앱에 ACCESS_COARSE_LOCATION 드림 구성된 권한과 함께 ACCESS_FINE_LOCATION, 사용할 수 있습니다. 다음을 수행해야 합니다. 두 위치 정보 액세스 권한을 모두 구성해야 합니다.

그러나 사용자가 대략적인 위치를 지정하는 경우 이렇게 하면 Geospatial API가 필요한 정확한 위치를 얻지 못합니다. 지리정보 서비스는 앱에서 대략적인 위치만 제공하는 경우 자체적으로 구성하도록 허용하지 않습니다. 앱에서 대략적인 위치가 포함된 Geospatial API를 사용할 수 없습니다.

기기의 현재 위치에서 Geospatial 사용 가능 여부 확인

Geospatial API는 VPS 및 GPS의 조합을 사용하여 지리정보 포즈를 결정하므로 기기가 위치를 확인할 수 있는 한 API를 사용할 수 있습니다. 실내 공간 및 밀집한 도시 환경과 같이 GPS 정확도가 낮은 지역에서는 API가 VPS 범위를 사용하여 높은 정확성 포즈를 생성합니다. 일반적인 조건에서 VPS는 위치 정확도는 약 5m, 회전 정확도는 5도입니다. ArSession_checkVpsAvailabilityAsync()를 사용하여 특정 위치에 VPS 적용 범위가 있는지 확인합니다.

Geospatial API는 VPS 범위가 없는 영역에서도 사용할 수 있습니다. 오버헤드 장애물이 거의 또는 전혀 없는 야외 환경에서는 GPS만 사용해도 높은 정확도로 자세를 취할 수 있습니다.

다음 단계