Yeni ARCore Geospatial API'yi kullanarak artırılmış gerçeklik (AR) uygulaması derleme

1. Genel Bakış

ARCore, Google'ın akıllı telefonlarda Artırılmış Gerçeklik deneyimleri oluşturmaya yönelik çerçevesidir. Yeni ARCore Geospatial API, Artırılmış Gerçekliğe yeni bir bakış açısı kazandırarak gerçek dünyadaki önemli noktaların etrafına konuma özgü Artırılmış Gerçeklik ara noktaları eklemenize olanak tanır.

Neler oluşturacaksınız?

Bu codelab'de ARCore Geospatial API'yi kullanmaya başlayacaksınız. Geospatial API'nin genel artırılmış gerçeklik deneyiminize ne gibi bilgiler sunabileceğini ve bu verilerin basit bir AR yön bulma deneyimini desteklemek için nasıl kullanılabileceğini keşfedeceksiniz.

Neler öğreneceksiniz?

  • Geospatial API kullanan bir ARCore projesi nasıl oluşturulur?
  • Geospatial API'den coğrafi veri isteme ve bu verileri Google Haritalar kullanarak görüntüleme
  • Gerçek dünyadaki bir konuma bağlı bir Çapa nasıl yerleştirilir?

Gerekenler

2. Geliştirme ortamınızı ayarlama

Android Studio'yu kurma

Geospatial API'yi kullanmaya başlamak için, Google Haritalar SDK'sı ile entegre edilmiş bir ARCore projesinin temellerini içeren bir başlangıç projesi sağladık. Bu sayede Geospatial API'yi kullanmaya hızlı bir şekilde başlayabilirsiniz.

  1. Android Studio'yu başlatın ve VCS'den bir proje içe aktarın.
    • Açık bir projeniz varsa Dosya > Yeni > Sürüm Denetimi'nden proje....
    • Android Studio'ya Hoş Geldiniz penceresini görürseniz VCS'den al seçeneğini kullanın. VCS konumundan al
  2. Git'i seçin ve projeyi içe aktarmak için https://github.com/google-ar/codelab-geospatial.git URL'sini kullanın.

Google Cloud projesi oluşturun

Geospatial API, yön değerlerini iyileştirmek için StreetView görüntülerini cihazın manyetometre ve kamera sensörü bilgileriyle birlikte kullanır. Bu hizmetten yararlanabilmek için Google Cloud projesi oluşturmanız gerekir.

  1. Google Cloud Console'da proje oluşturun:
    • Create a project in Google Cloud Platform (Google Cloud Platform'da proje oluşturma) sayfasını ziyaret edin.
      Google Cloud projesi oluşturma
    • Uygun bir Proje adı girin (ör. "ARCore Geospatial API projesi") ve herhangi bir konum seçin.
    • Oluştur'u tıklayın.
  2. Gerekli API'leri etkinleştirin:
    • Kenar çubuğundan API'ler ve Hizmetler'i, ardından Kitaplık'ı tıklayın.
    • ARCore API'yi arayın.
    • Etkinleştir'i tıklayın.
    • Kitaplık'a geri dönün.
    • Android için Haritalar SDK'sını arayın.
    • Etkinleştir'i tıklayın.
  3. API Anahtarı kimlik bilgilerini oluşturun:
    • API'ler ve Hizmetler'i tıklayın, Kimlik bilgileri'ni seçin.
    • Üst çubukta Kimlik Bilgisi Oluştur'u tıklayın ve ardından API Anahtarı'nı seçin.
    • Oluşturulan anahtarı sonraki adımda ihtiyaç duyacağınız şekilde not alın. Almanız gerekiyorsa Credentials (Kimlik Bilgileri) sayfasına dönün.

Bu adımları uygulayarak API anahtarı yetkilendirmesiyle bir Google Cloud projesi oluşturdunuz ve Geospatial API'yi kullanmaya hazırsınız.

API anahtarını Android Studio projesiyle entegre etme

Google Cloud'daki API anahtarını projenizle ilişkilendirmek için Android Studio'da oluşturduğunuz projeyi açın ve API anahtarlarını değiştirin:

  1. Uygulamayı açın > src > AndroidManifest.xml dosyası olarak indirin.
  2. Şu meta-data girişini bul:
    <meta-data
        android:name="com.google.android.ar.API_KEY"
        android:value="PLACEHOLDER_API_KEY" />
    
    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="PLACEHOLDER_API_KEY" />
    
  3. PLACEHOLDER_API_KEY kısmını Google Cloud projenizde oluşturduğunuz API anahtarıyla değiştirin.

com.google.android.ar.API_KEY içinde depolanan değer bu uygulamaya Geospatial API'yi kullanma yetkisi verir. com.google.android.geo.API_KEY politikasında saklanan değer ise bu uygulamaya Google Haritalar SDK'sını kullanma yetkisi verir.

Projenizi doğrulama

Projenizin tamamen hazır olduğundan emin olun. Android Studio'da uygulamanızı çalıştırın. Ekranın alt kısmında çalışan bir haritayla birlikte kamera görünümünü görüyor olmanız gerekir.

Ortak Proje

3. Kullanıcının konumunu belirleme

Bu adımda, Geospatial API'yi kullanmaya başlamak için örnek projeye kod ekleyeceksiniz.

ARCore oturumunu Geospatial API'yi kullanacak şekilde yapılandırma

Coğrafi verileri almak için Geospatial API'yi etkinleştirmeniz gerekir. HelloGeoActivity.kt içinde configureSession işlevini değiştirerek oturum yapılandırmanızdaki GeospatialMode değerini ENABLED olarak değiştirin:

fun configureSession(session: Session) {
  session.configure(
    session.config.apply {
      // Enable Geospatial Mode.
      geospatialMode = Config.GeospatialMode.ENABLED
    }
  )
}

Coğrafi mod ENABLED olsa da uygulama Coğrafi bilgileri alabilir.

Geospatial API'den veri isteme

HelloGeoRenderer.kt içinde aşağıdaki satırı bulun:

// TODO: Obtain Geospatial information and display it on the map.

Altında, Earth nesnesinin kullanılabilir olup olmadığını kontrol edin. Böylece trackingState TrackingState.ENABLED var.

val earth = session.earth
if (earth?.trackingState == TrackingState.TRACKING) {
  // TODO: the Earth object may be used here.
}

TODO öğesinin altında, ARCore'dan coğrafi bilgileri isteyin. Bu satırı ekleyin:

val cameraGeospatialPose = earth.cameraGeospatialPose

Böylece, aşağıdaki bilgileri içeren bir GeospatialPose elde edersiniz:

  • Enlem ve boylam cinsinden ifade edilen konum. Konum doğruluğu tahmini de sağlanır.
  • Yükseklik ve yükseklik doğruluğu tahmini.
  • Başlık, cihazın baktığı yöne dair yaklaşık bir değer ve yönün doğruluğuna ilişkin bir tahmin.

Konum bilgilerini haritada göster

Kullanıcının nerede olduğunu gösteren bir işaretçiyi haritada taşımak için cameraGeospatialPose içinde depolanan GeospatialPose kullanabilirsiniz. Kaldığınız yerden devam edin ve aşağıdakileri ekleyin:

activity.view.mapView?.updateMapPosition(
  latitude = cameraGeospatialPose.latitude,
  longitude = cameraGeospatialPose.longitude,
  heading = cameraGeospatialPose.heading
)

Bu işlem, Geospatial API'den alınan değerleri kullanarak haritanın konumunu sürekli olarak günceller.

Deneyin

Android Studio'da Oynat'ı tıklayın. ARCore'un izlemeyi oluşturmasına yardımcı olmak için cihazınızı yukarı tutun ve hareket ettirin. Kısa bir süre sonra, haritada yeşil bir işaretçi görürsünüz. Siz çevrenizi görüntüledikçe bu işaretçi döner. Ayrıca doğru yönü göstermelidir: Fiziksel olarak kuzeye baktığınızda, ok aynı zamanda kuzeyi işaret eder.

Yeşil ok, konumunuzu ve yönünüzü izler.

4. Google Earth koordinatlarını kullanarak çapa yerleştirme

Geospatial API, Sabitleri gerçek dünyadaki herhangi bir koordinat çiftine ve döndürmeye yerleştirebilir. Bu sayede, belirli yerler ziyaret edildiğinde kullanıcılarınız sabit içeriği görebilir.

Bu adımda, haritaya dokunarak bir Sabitleyici yerleştirme yöntemi ekleyeceksiniz.

Haritaya dokunulduğunda yapılacak işlemi ayarlayın

Proje, harita parçası tıklandığında enlem ve boylamla birlikte çağrılan bir onMapClick işleviyle birlikte gelir. HelloGeoRenderer.kt içinde onMapClick işlevini bulun.

Earth nesnesinin kullanılabildiğinden emin olun

Earth'te çapa oluşturmadan önce Dünya nesnesinin TrackingState değerinin TRACKING olduğundan, yani Dünyanın konumunun bilindiğinden emin olun. Ayrıca EarthState değerinin ENABLED olduğundan, yani Geospatial API ile herhangi bir sorunla karşılaşılmadığından emin olun. Şu satırları onMapClick içine ekleyin:

val earth = session?.earth ?: return
if (earth.trackingState != TrackingState.TRACKING) {
  return
}

Yeni Sabitleyicinin konumunu belirleyin

Earth nesnesinin izlendiğini onayladıktan sonra, varsa önceki earthAnchor öğesini çıkarın. Sonraki adımlarda earthAnchor öğesini yeni bir sabitle değiştireceksiniz:

earthAnchor?.detach()

Ardından, yeni çapanın rakımını belirlemek için cameraGeospatialPose özelliğini kullanın. Haritaya dokunulan koordinat çiftini, sabitleyicinin konumu olarak kullanın.

// Place the earth anchor at the same altitude as that of the camera to make it easier to view.
val altitude = earth.cameraGeospatialPose.altitude - 1
// The rotation quaternion of the anchor in the East-Up-South (EUS) coordinate system.
val qx = 0f
val qy = 0f
val qz = 0f
val qw = 1f
earthAnchor =
  earth.createAnchor(latLng.latitude, latLng.longitude, altitude, qx, qy, qz, qw)

createAnchor, belirli bir dönüşle coğrafi koordinatlara sabitlenmiş bir Anchor oluşturur. Bu çapa, belirtilen koordinatlara ve rakıma sabit ve sabit kalmaya çalışır.

Yerleştirilmiş işaretçiyi haritada göster

Son olarak, işaretçinin yerleştirildiği yeri belirten yeni bir işaretçiyi taşıyın:

activity.view.mapView?.earthMarker?.apply {
  position = latLng
  isVisible = true
}

Deneyin

Android Studio'da Oynat'ı tıklayın. Cihazınızı yukarıda tutun ve ARCore'un izlemeyi oluşturmasına yardımcı olmak için hareket ettirin. Kısa bir süre sonra, haritada mevcut konumunuzu belirten yeşil bir işaret görürsünüz.

Haritaya dokunulduğunda, gerçek dünyadaki bir konuma sabitlenmiş bir çapa yerleştirmek için Geospatial API kullanılıyor. AR görünümünde görebilmek için sabiti mevcut konumunuzun yakınına yerleştirmeyi deneyin. Siz ortamınızda gezinirken sabit kalmalıdır.

Haritaya dokunarak işaretçi yerleştirin.

5. Sonuç

Bu codelab'de, gerçek dünyaya bağlı basit bir AR deneyimi oluşturmak için Geospatial API'yi nasıl kullanacağınızı öğrendiniz.

Haritaya dokunarak işaretçi yerleştirin.

İşlediğimiz konular

  • Geospatial API etkinken Google Cloud projesi oluşturma
  • ARCore projesinde coğrafi bilgilerin elde edilmesi ve haritada gösterilmesi.
  • Coğrafi konumlandırma kullanılarak gerçek dünyada konumlandırılmış bir çapa nasıl yerleştirilir?

Ek kaynaklar

Bu codelab'de kullanılan coğrafi kavramlar ve SDK'lar hakkında daha fazla bilgi için şu ek kaynakları inceleyin: