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?
- Kullanıcının cihazının gerçek dünyadaki tam konumunu belirlemek için cihaz kamerasının Coğrafi konumlandırma pozunu alın.
- Bir cihazın belirli konumunda VPS'nin kullanılabilir olup olmadığını kontrol edin.