Android NDK uygulamanız için Geospatial API'yi etkinleştir (C)

Uygulamanızın ayarlarını, Geospatial API'yi kullanabilecek şekilde yapılandırın.

Ön koşullar

Devam etmeden önce temel AR kavramlarını ve ARCore oturumunu nasıl yapılandıracağınızı anladığınızdan emin olun.

Burada açıklanan işlevleri gösteren örnek bir uygulama çalıştırmak isterseniz Java için Android için ARCore Geospatial Hızlı Başlangıç Kılavuzu'na bakın. Hızlı Başlangıç'taki örnek uygulama Java'da yazılmıştır. Bu belgedeki kod örnekleri C'de yazılan aynı işlev içindir.

Geospatial API hakkında daha fazla bilgi için Geospatial API'ye giriş bölümüne bakın.

ARCore ile geliştirme konusunda yeniyseniz yazılım ve donanım gereksinimleri, ön koşullar ve kullandığınız platformlara özgü diğer bilgiler hakkında bilgi için Başlarken bölümüne bakın.

Geliştirme ortamınızın, Java için Hızlı Başlangıç bölümünde açıklandığı gibi ARCore SDK gereksinimlerini karşıladığından emin olun.

ARCore API'yi etkinleştir

Uygulamanızda Görsel Konumlandırma Sistemi'ni (VPS) kullanmadan önce, yeni veya mevcut bir Google Cloud projesinde ARCore API'yi etkinleştirmeniz gerekir. Bu hizmet, Coğrafi çapaların barındırılması, depolanması ve çözümlenmesinden sorumludur.

Anahtarsız yetkilendirme tercih edilir ancak API anahtarı yetkilendirmesi de desteklenir.

Gerekli kitaplıkları uygulamanıza ekleme

Uygulamanızı ARCore API'yi çağırmak üzere yetkilendirdikten sonra, uygulamanızda Coğrafi özellikleri etkinleştirmek için kitaplıklar eklemeniz gerekir.

Uygulamanızın build.gradle dosyasında, Play Hizmetleri Konum kitaplığını içerecek şekilde Google Play hizmetlerini ayarlayın.

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

Oturum yapılandırmasında Coğrafi özellikleri etkinleştir

Oturumu oluşturmadan önce, oturum yapılandırmanızdaki GeospatialMode değerini ENABLED olarak değiştirin:

// 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);

Coğrafi mod ENABLED olarak ayarlandığında, uygulamanın Görsel Konumlandırma Sistemi'nden (VPS) coğrafi bilgi elde etmesine izin verilir.

Kullanıcıdan cihaz verilerinin kullanımına izin vermesini iste

ARCore Geospatial API'yi kullanan uygulamalar, kullanıcıya, cihazındaki verilerin kullanımına onay ve izin verme istemi sunmalıdır. Daha fazla bilgi için Kullanıcı gizlilik şartları bölümüne bakın.

Cihaz uyumluluğunu kontrol etme

Java için quickstart açıklandığı gibi, ARCore'u destekleyen tüm cihazlar Geospatial API'yi de desteklemez.

Kullanıcının cihazının uyumluluğunu kontrol etmek için ArSession_isGeospatialModeSupported() numaralı telefonu arayın. Bu, false değerini döndürürse aşağıdaki oturumu yapılandırmaya çalışmayın. Bu işlem, ArStatus uygulamasının bir AR_ERROR_UNSUPPORTED_CONFIGURATION bildirmesine neden olur.

Çalışma zamanında kullanıcıdan konum izni iste

Uygulamanız çalışma zamanında konum izinleri istemelidir.

ARCore Geospatial API'yi kullanmak için uygulamanızın aşağıdaki ek izinleri kaydetmesi gerekir:

  • Kullanıcının konumunu doğru belirlemek için ACCESS_FINE_LOCATION.

  • ACCESS_COARSE_LOCATION. Ancak Geospatial API, yaklaşık konumla çalışacak şekilde yapılandırılamaz ve kullanıcı bu izni ayarladığında API istekleri başarısız olur. Daha fazla bilgi için aşağıya göz atın.

  • ACCESS_INTERNET adresinden ARCore Geospatial API hizmetiyle iletişim kurun.

<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 veya sonraki bir sürümü çalıştıran cihazlarda kullanıcılar, uygulamanızın yalnızca yaklaşık konum bilgisine erişmesini isteyebilir. Bu isteğin gerçekleştirilmesi için uygulamanızda ACCESS_FINE_LOCATION ile birlikte ACCESS_COARSE_LOCATION izni yukarıda gösterildiği gibi yapılandırılmış olmalıdır. Her iki konum iznini de yapılandırmanız gerekir.

Bununla birlikte, kullanıcılar yaklaşık konum belirttiklerinde, bunu yapmak Geospatial API'nin gerektirdiği tam konumu elde etmesini engeller. Uygulamanız ona yalnızca yaklaşık konum veriyorsa, Coğrafi hizmet, kendisinin yapılandırılmasına izin vermez. Uygulamanız, Geospatial API'yi yaklaşık konumla kullanamaz.

Cihazın mevcut konumundaki Coğrafi kullanılabilirliği kontrol edin

Geospatial API, Coğrafi konumu belirlemek için VPS ve GPS kombinasyonunu kullandığından, cihaz konumunu belirleyebildiği sürece API kullanılabilir. API, iç mekan alanları ve yoğun kentsel ortamlar gibi GPS doğruluğunun düşük olduğu alanlarda yüksek doğruluklu pozlar oluşturmak için VPS'nin kapsamını kullanır. VPS'nin normal koşullarda yaklaşık 5 metre konum doğruluğu ve 5 derece dönme doğruluğu sağlaması beklenebilir. Belirli bir konumun VPS kapsamında olup olmadığını belirlemek için ArSession_checkVpsAvailabilityAsync() özelliğini kullanın.

Geospatial API, VPS kapsamında olmayan bölgelerde de kullanılabilir. Yukarıdan engellerin çok az olduğu veya hiç olmadığı açık ortamlarda GPS, yüksek doğrulukta poz oluşturmak için yeterli olabilir.

Sırada ne var?