Geospatial API'yi uygulamanızda kullanmak için uygulamanızın Google Cloud'da ARCore API'ye erişecek şekilde ayarlanması gerekir. Bu API, Google Street View'dan alınan verileri kullanarak doğru konumlandırma sağlayan Görsel Konumlandırma Hizmeti'ni içerir.
Bu kılavuz, API'ye erişmek için doğru API'yi ve yetkilendirme yöntemlerini etkinleştiren bir Google Cloud projesi oluşturmanıza yardımcı olur.
Google Cloud projesi oluşturma veya mevcut bir projeyi kullanma
Mevcut bir Google Cloud projeniz varsa onu seçin.
Mevcut bir projeniz yoksa bir proje oluşturun.
ARCore API'yi etkinleştirme
ARCore API'yi kullanmak için projenizde etkinleştirmeniz gerekir.
Google Cloud için yetkilendirme ayarlama
Android uygulamaları, ARCore API ile iki farklı yetkilendirme yöntemi kullanarak iletişim kurabilir: Önerilen yöntem olan anahtarsız yetkilendirme (OAuth 2.0) ve API anahtarı yetkilendirmesi:
- Anahtarsız yetkilendirme, uygulamanızı yetkilendirmek için uygulamanın paket adı ile imzalama anahtarının parmak izini birlikte kullanır.
API anahtarı, Google Cloud projesini tanımlayan bir dizedir. API anahtarları genellikle istemciler tarafından erişilebilir olduğundan güvenli kabul edilmez. ARCore API ile iletişim kurmak için anahtarsız yetkilendirmeyi kullanabilirsiniz.
Anahtarsız yetkilendirme
Uygulamanızı anahtarsız kimlik doğrulama kullanarak yetkilendirmek için OAuth 2.0 istemci kimlikleri oluşturun.
Google Cloud'da Kimlik bilgileri sayfasına gidin.
Kimlik bilgileri oluştur'u tıklayın ve menüden OAuth istemci kimliği'ni seçin.
Zorunlu alanları aşağıdaki gibi doldurun:
- Uygulama türü: Android'i seçin.
- Paket adı:
AndroidManifest.xmldosyanızda belirtilen paket adını kullanın. - SHA-1 sertifika parmak izi: İstemci kimlik doğrulaması bölümündeki talimatları uygulayarak SHA-1 sertifika parmak izlerini alın.
Oluştur'a basın.
API Anahtarı
Aşağıdaki adımları uygulayarak Google Cloud Console'dan bir API anahtarı oluşturun:
Google Cloud Console'da Kimlik bilgileri sayfasına gidin:
Kimlik bilgileri oluştur'u tıklayın ve menüden API anahtarı'nı seçin.
ARCore API için bir API kısıtlaması ekleyin. Daha fazla bilgi için API anahtarı kısıtlamaları uygulama başlıklı makaleyi inceleyin.
Oluştur'u tıklayın. API anahtarı oluşturuldu iletişim kutusunda, yeni oluşturduğunuz anahtarın dizesi gösterilir.
Android Studio'da yeni API anahtarını projenize ekleyin. API anahtarını, uygulamanızın AndroidManifest.xml dosyasındaki <application> öğesinin içinde bulunan <meta-data> öğesine ekleyin:
<meta-data
android:name="com.google.android.ar.API_KEY"
android:value="API_KEY"/>
Gerekli izinleri isteme
Jetpack XR ile ARCore'da Geospatial API'yi kullanmak için uygulamanızın aşağıdaki çalışma zamanı izinlerini istemesi gerekir:
ACCESS_FINE_LOCATION: Kullanıcının tam konumunu belirlemek için gereklidir.
Geospatial API, mobil cihazlarda aşağıdaki izinleri de gerektirir:
android.permission.CAMERA: Cihazın kamerasına erişmek için gereklidir.android.permission.INTERNET: Google Cloud hizmetleriyle iletişim kurmak için gereklidir.
Oturuma erişme
Uygulamanızın oluşturması gereken Jetpack XR Runtime Session aracılığıyla coğrafi bilgilere erişin.
Oturumu yapılandırma
Geospatial API, XR oturumlarında varsayılan olarak etkin değildir. Uygulamanız, Session üzerinde bir GeospatialMode yapılandırarak bunu açıkça etkinleştirmelidir. Aşağıdaki modlar kullanılabilir:
GeospatialMode.SPATIAL: Geospatial API etkinleştirildi. Geospatial API, cihazın coğrafi konum pozunu belirlemek için Görsel Konumlandırma Sistemi (VPS), Küresel Konum Belirleme Sistemi (GPS) verilerini ve cihazın hareket sensörlerini kullanır. Bu mod, akıllı gözlük cihazlarında kullanılamaz.GeospatialMode.INERTIAL: Geospatial API, düşük güç modunda etkinleştirilir. Geospatial API, cihazın coğrafi konumunu belirlemek için yalnızca GPS ve cihazın hareket sensörlerini kullanır. Bu mod yalnızca Akıllı Gözlük cihazlarında kullanılabilir.GeospatialMode.DISABLED: Geospatial API devre dışı bırakılır. Başka bir moddan bu moda geçiş yapıldığında Geospatial API, edinilen tüm kaynakları serbest bırakır ve izlemeyi durdurur.
Tüm cihazlar tüm Geospatial modlarını desteklemez. Daha fazla bilgi için GeospatialMode sayfasına göz atın. Belirli bir GeospatialMode değerinin desteklenip desteklenmediğini öğrenmek için XrDevice.isGeospatialSupported kullanın.
Aşağıdaki kod örneğinde, Session.configure kullanarak GeospatialMode değerinin nasıl ayarlanacağı gösterilmektedir.
// Define the configuration object to enable Geospatial features. val newConfig = Config.Builder(session.config) .setGeospatial(GeospatialMode.SPATIAL) .build() // Apply the configuration to the session. try { when (val configResult = session.configure(newConfig)) { is SessionConfigureSuccess -> { // The session is now configured to use the Geospatial API. } else -> { // Handle other configuration errors (e.g., missing library dependencies). } } } catch (e: UnsupportedOperationException) { // Handle configuration failure if the mode is not supported. }
Kullanıcıdan cihaz verilerinin kullanımına izin vermesini isteme
Jetpack XR için ARCore ile Geospatial API'yi kullanan uygulamalar, kullanıcıya cihazındaki verilerin kullanımını onaylaması ve izin vermesi için bir istem göstermelidir. Daha fazla bilgi için kullanıcı gizlilik şartları'na bakın.
Coğrafi nesneyi kullanma
Oturum yapılandırıldıktan sonra Geospatial.getInstance kullanarak Geospatial nesnesini alın. Geospatial nesnesini yalnızca durumu GeospatialTrackingState.RUNNING olduğunda kullanın.
Aşağıdaki kod örneklerinde, Geospatial.state kullanarak coğrafi durumu nasıl izleyeceğiniz gösterilmektedir.
Compose XR
val geospatial = remember { Geospatial.getInstance(session) } val geospatialState by geospatial.state.collectAsStateWithLifecycle() if (geospatialState.geospatialTrackingState == Geospatial.GeospatialTrackingState.RUNNING) { // Queries to the Geospatial API are only valid when the state is RUNNING. }
SceneCore
val geospatial = Geospatial.getInstance(session) lifecycleScope.launch { geospatial.state.collect { geospatialState -> if (geospatialState == Geospatial.GeospatialTrackingState.RUNNING) { // Queries to the Geospatial API are only valid when the state is RUNNING. } } }
Doğruluk değerlerini anlama
Geospatial API etkinleştirildiğinde üç doğruluk değeri sağlar: yatay, dikey ve yön doğruluğu. Bu doğruluk değerleri zaman içinde güncellenir ve daha fazla veri elde edildikçe daha kesin hale getirilebilir. Daha büyük değerler daha düşük doğruluğu gösterir ve %68 güven düzeyinin yarıçapı olarak tanımlanır. Diğer bir deyişle, gerçek değerin tahmini değerin belirtilen yarıçapı içinde olma olasılığı% 68'dir.
Mevcut doğruluk değerlerini almak için Geospatial.State.horizontalAccuracy, verticalAccuracy ve orientationYawAccuracy kullanın.
Uygulamanızın düzgün çalışması için belirli bir hassasiyet düzeyi gerekebilir. Örneğin, uygulamanız sanal içerik oluşturmadan önce yatay doğruluğun 5 metreden az olmasını bekleyebilir. Daha yüksek doğrulukta veri elde etme olasılığını artırmak için uygulamanız, kullanıcılara çevrelerine, tercihen Google Street View'da bulunan binalara veya yüksek görsel ayrıntıya sahip diğer özelliklere bakmaları talimatını vermelidir. Belirli bir konumda VPS'nin kullanılabilir olup olmadığını belirlemek için Geospatial.checkVpsAvailability kullanın.
Sonraki adımlar
Geospatial API, uygulamanızda doğru şekilde ayarlandığında uygulamanız şunları yapabilir:
- Cihaz yerel pozları ile Geospatial pozları arasında dönüştürme yapma,
- Coğrafi pozlarda içerik oluşturma