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 deneyimi oluşturmaya yönelik çerçevesidir. Yeni ARCore Geospatial API, Artırılmış Gerçekliğe yeni bir özellik katarak gerçek dünyadaki önemli noktaların etrafında konuma özgü Artırılmış Gerçeklik ara noktaları belirlemenize olanak tanır.

Ne oluşturacaksınız?

Bu codelab'de, ARCore Geospatial API'yi kullanmaya başlayacaksınız. Geospatial API'nin genel AR deneyiminize hangi bilgileri sunabileceğini ve bu verilerin basit bir AR yol bulma deneyimini güçlendirmek için nasıl kullanılabileceğini keşfedeceksiniz.

Neler öğreneceksiniz?

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

Gerekenler

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

Android Studio'yu ayarlama

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 sunduk. Bu, Geospatial API'yi kullanmaya hızlı bir başlangıç yapmanızı sağlar.

  1. Android Studio'yu başlatın ve VCS'den bir proje içe aktarın.
    • Zaten açık bir projeniz varsa Sürüm Denetiminden Dosya > Yeni > Proje... seçeneğini kullanın.
    • Android Studio'ya hoş geldiniz penceresini görürseniz VCS'den al'ı 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 cihazın manyetometre ve kamera sensörü bilgileriyle birlikte StreetView görüntülerini kullanır. Bu hizmetten yararlanmak için Google Cloud projesi oluşturmanız gerekir.

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

Bu adımlarla, API anahtarı yetkilendirmesine sahip 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. app > src > AndroidManifest.xml dosyasını açın.
  2. Şu meta-data girişlerini 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 değerini 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 verirken com.google.android.geo.API_KEY içinde depolanan değer, uygulamaya Google Haritalar SDK'sını kullanma yetkisi verir.

Projenizi doğrulayın

Projenizin 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örebilmeniz 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ırın

Coğrafi verileri elde etmek için Geospatial API'yi etkinleştirmeniz gerekir. HelloGeoActivity.kt içindeki configureSession işlevini değiştirerek oturum yapılandırmanızdaki GeospatialMode öğesini 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 iken, uygulama Coğrafi bilgileri alabilir.

Geospatial API'den veri isteme

HelloGeoRenderer.kt içinde şu satırı bulun:

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

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

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

TODO yerinin altında, ARCore'dan Coğrafi bilgileri isteyin. Bu satırı ekle:

val cameraGeospatialPose = earth.cameraGeospatialPose

Böylece şu bilgileri içeren bir GeospatialPose elde edersiniz:

  • Enlem ve boylam cinsinden ifade edilen konum. Konum doğruluğuna dair bir tahmin de sağlanır.
  • Yükseklik ve irtifa doğruluğunun tahmini.
  • Yön, cihazın gittiği yönle ilgili yaklaşık bilgi ve yönün doğruluğuna dair bir tahmin.

Konum bilgilerini haritada görüntüleme

cameraGeospatialPose içinde depolanan GeospatialPose kullanarak haritada kullanıcının yerini gösteren bir işaretçinin yerini değiştirebilirsiniz. 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, Geospatial API'dan elde edilen değerleri kullanarak haritanın konumunu sürekli olarak günceller.

Deneyin

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

Yeşil ok, konumunuzu ve başlığınızı izler.

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

Geospatial API, Anchor'ları gerçek dünyadaki herhangi bir koordinat çiftine ve dönüşe yerleştirebilir. Bu, belirli konumlar ziyaret edildiğinde kullanıcılarınızın sabit içeriği görmesini sağlar.

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

Haritaya dokunulduğunda yapılacak işlemi ayarlama

Projede bir onMapClick işlevi bulunur. Bu işlev, harita parçası tıklandığında enlem ve boylamla çağrılır. HelloGeoRenderer.kt öğesinde onMapClick işlevini bulun.

Earth nesnesinin kullanılabildiğinden emin olun

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

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

Yeni Anchor'ın 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 sabitin rakımını belirlemek için cameraGeospatialPose öğesini kullanın. Çapa yerinin konumu olarak haritaya dokunarak alınan koordinat çiftini 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öndürmeyle jeodezik koordinatlara sabitlenmiş bir Anchor oluşturur. Bu sabitleme, belirtilen koordinatlara ve yüksekliğe sabitlenmiş ve sabit kalmaya çalışır.

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

Son olarak, işaretçinin yerleştirildiği yeri gösteren 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. ARCore'un izlemeyi kurmasına yardımcı olmak için cihazınızı yukarıda tutun ve etrafta gezdirin. Kısa bir süre sonra, haritada mevcut konumunuzu gösteren yeşil bir işaretçi görünecektir.

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

Haritaya dokunarak bir 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 bir işaretçi yerleştirin.

İşlediklerimiz

  • Geospatial API etkin halde Google Cloud projesi oluşturma.
  • Bir ARCore projesinde Coğrafi konum bilgileri nasıl elde edilir ve harita üzerinde nasıl gösterilir?
  • Coğrafi konumlandırmayı kullanarak 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 ayrıntı için şu ek kaynakları inceleyin: