Android uygulamanız için Geospatial API'yi (Kotlin/Java) etkinleştirin

Uygulamanızın ayarlarını, Coğrafi API'yi kullanabileceği ş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.

Örnek uygulama ve codelab

Bu videoda, Coğrafi verileri gösteren ve Geospatial API'yi kullanarak içerikleri gerçek dünyadaki konumlara yerleştiren bir uygulama geliştirme adımları açıklanmaktadır.

Aynı adımlar için Geospatial codelab (Coğrafi kod laboratuvarı) belgelerini de uygulayabilirsiniz. Videoda oluşturulan örnek uygulamayı çalıştırmak için ARCore Coğrafi Hızlı Başlangıç başlıklı makaleyi inceleyin.

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

ARCore ile geliştirmeye yeni başladıysanız yazılım ve donanım gereksinimleri, ön koşullar ve kullandığınız platformlara özgü diğer bilgiler için Başlangıç bölümüne bakın.

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

ARCore API'yi etkinleştirme

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 yer işaretlerini barındırmaktan, depolamaktan ve çözmekten sorumludur.

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

Gerekli kitaplıkları uygulamanıza ekleyin

Uygulamanızı ARCore API'yi çağıracak şekilde yetkilendirdikten sonra, uygulamanızda Coğrafi Özellikler'i etkinleştirmek için kitaplıklar eklemeniz gerekir.

Uygulamanızın build.gradle dosyasında, Google Play hizmetlerini Play Hizmetleri Konum kitaplığını içerecek şekilde 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ştirme

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

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

Coğrafi konum modu ENABLED olarak ayarlandığında uygulamanın Görsel Konumlandırma Sistemi'nden (VPS) coğrafi bilgi almasına izin verilir.

Kullanıcıdan, cihaz verilerinin kullanılmasına izin vermesini iste

ARCore Geospatial API kullanan uygulamalar, kullanıcıya cihazındaki verilerin kullanımını onaylamasını ve kullanmasına izin vermesini isteyen bir istem sunmalıdır. Daha fazla bilgi için Kullanıcı gizliliği şartları başlıklı makaleyi inceleyin.

Cihaz uyumluluğunu kontrol etme

Hızlı başlangıç bölümünde 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 Session.checkGeospatialModeSupported() numaralı telefonu arayın. Bu, false (yanlış) değerini döndürürse oturumu (aşağıda) yapılandırmaya çalışmayın. Bu, bir UnsupportedConfigurationException hatası verir.

Çalışma zamanında kullanıcıdan konum izinleri isteme

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

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

  • ACCESS_FINE_LOCATION kullanıcı konumunu doğru şekilde belirlemek için.

  • Kullanıcının konumunun doğru olmaması ve kullanıcı gizliliği gereksinimlerine uymak için ACCESS_COARSE_LOCATION. Ancak Geospatial API, kaba 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 ARCore Geospatial API hizmetiyle iletişime geçin.

<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 sürümleri çalıştıran cihazlarda, kullanıcılar uygulamanızın yalnızca yaklaşık konum bilgilerine erişmesini isteyebilir. Bu isteği karşılamak için uygulamanızda, yukarıda gösterildiği gibi ACCESS_FINE_LOCATION ile birlikte ACCESS_COARSE_LOCATION izninin yapılandırılmış olması gerekir. Her iki konum iznini de yapılandırmanız gerekir.

Ancak kullanıcılar kaba konum belirttiğinde bu durum, Coğrafi API'nin ihtiyaç duyduğu tam konumu elde etmesini engeller. Uygulamanız ona yalnızca yaklaşık konum bilgisi veriyorsa jeo-uzamsal hizmet yapılandırılmasına izin vermez. Uygulamanız, yaklaşık konum bilgisiyle Geospatial API'yi kullanamaz.

Cihazın mevcut konumunda Coğrafi Veri Kullanımı'nın kullanılabilirliğini kontrol etme

Geospatial API, coğrafi konumlu bir pozu belirlemek için VPS ve GPS'ten alınan verileri birlikte kullandığından, cihazın konumunu belirleyebildiği sürece API kullanılabilir. Kapalı alanlar ve yoğun kentsel ortamlar gibi GPS doğruluğunun düşük olduğu yerlerde API, yüksek doğrulukta pozlar oluşturmak için VPS kapsamını kullanır. Tipik koşullarda VPS'nin yaklaşık 5 metre konum doğruluğu ve 5 derece dönüş doğruluğu sağlaması beklenebilir. Belirli bir konumun VPS kapsamına girip girmediğini belirlemek için Session.checkVpsAvailabilityAsync() değerini kullanın.

Geospatial API, VPS kapsama alanı olmayan bölgelerde de kullanılabilir. Baş üstü engellerin az olduğu veya hiç olmadığı açık hava ortamlarında GPS, yüksek doğrulukta bir poz oluşturmak için yeterli olabilir.

Sırada ne var?