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

1. Genel Bakış

ARCore, akıllı telefonlarda artırılmış gerçeklik deneyimleri oluşturmak için Google'ın kullandığı çerçevedir. Yeni ARCore Geospatial API, artırılmış gerçekliğe yeni bir boyut kazandırarak konuma özel artırılmış gerçeklik yol işaretlerini gerçek dünyadaki önemli yerlerin etrafına yerleştirmenize 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 desteklemek için nasıl kullanılabileceğini öğreneceksiniz.

Neler öğreneceksiniz?

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

İhtiyacınız olanlar

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

Android Studio'yu kurma

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

  1. Android Studio'yu başlatın ve VCS'den bir proje içe aktarın.
    • Zaten açık bir projeniz varsa Dosya > Yeni > Sürüm Kontrolünden Proje... seçeneğini kullanın.
    • Welcome to Android Studio (Android Studio'ya Hoş Geldiniz) penceresini görüyorsanız Get from VCS'yi (VCS'den Al) kullanın. VCS konumundan alma
  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şturma

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

  1. Google Cloud Console'da proje oluşturun:
  2. Gerekli API'leri etkinleştirin:
    • Kenar çubuğunda 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şturma:
    • API'ler ve Hizmetler bölümünde Kimlik Bilgileri'ni seçin.
    • Üst çubukta Kimlik bilgileri oluştur'u tıklayın, ardından API anahtarı'nı seçin.
    • Bir sonraki adımda ihtiyacınız olacağından oluşturulan anahtarı not edin. Gerekirse Kimlik Bilgileri sayfasına dönerek kimlik bilgilerinizi alın.

Bu adımlarla, API anahtarı yetkilendirmesi olan bir Google Cloud projesi oluşturdunuz ve Geospatial API'yi kullanmaya hazırsınız.

API anahtarını Android Studio projesine 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. Aşağıdaki meta-data girişlerini bulun:
    <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 uygulamanın Geospatial API'yi kullanmasına, com.google.android.geo.API_KEY içinde depolanan değer ise bu uygulamanın Google Haritalar SDK'sını kullanmasına izin verir.

Projenizi doğrulama

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 haritanın yanı sıra kamera görünümünü de görmeniz gerekir.

Boilerplate Project

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. GeospatialMode işlevini HelloGeoActivity.kt içinde değiştirerek oturum yapılandırmanızdaki GeospatialMode değerini ENABLED olarak değiştirin:configureSession

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

Coğrafi mod ENABLED durumundayken uygulama, coğrafi bilgiler 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ıma hazır olduğunu kontrol edin. Bu durumda trackingState TrackingState.ENABLED.

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

TODO simgesinin altında, ARCore'dan coğrafi konum bilgisi isteyin. Şu satırı ekleyin:

val cameraGeospatialPose = earth.cameraGeospatialPose

Bu işlem, aşağıdaki bilgileri içeren bir GeospatialPose oluşturur:

  • Enlem ve boylam olarak ifade edilen konum. Konum doğruluğu tahmini de sağlanır.
  • Rakım ve rakım doğruluğu tahmini.
  • Başlık, cihazın baktığı yönün yaklaşık değeri ve başlığın doğruluğunun tahmini.

Konumlandırma bilgilerini haritada görüntüleme

Kullanıcının bulunduğu yeri gösteren haritadaki işaretçiyi taşımak için cameraGeospatialPose içinde depolanan GeospatialPose öğesini kullanabilirsiniz. Kaldığınız yerden devam edin ve şunları ekleyin:

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

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

Deneyin

Android Studio'da Play'i (Oynat) tıklayın. ARCore'un izlemeyi başlatmasına yardımcı olmak için cihazınızı yukarı kaldırın ve hareket ettirin. Kısa bir süre sonra haritada yeşil bir işaretçi görünür. Bu işaretçi, çevrenizi görüntülerken döner. Ayrıca doğru yönü göstermelidir: Fiziksel olarak kuzeye baktığınızda ok da kuzeyi gösterir.

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

4. Earth koordinatlarını kullanarak sabitleme noktası yerleştirme

Geospatial API, gerçek dünyadaki herhangi bir koordinat çiftine ve dönüşe sabitleme noktaları yerleştirebilir. Bu özellik sayesinde kullanıcılarınız belirli konumlar ziyaret edildiğinde sabitlenmiş içerikleri görebilir.

Bu adımda, haritaya dokunarak sabitleme noktası yerleştirme yöntemi ekleyeceksiniz.

Haritaya dokunulduğunda yapılacak işlemi ayarlama

Projede, harita parçası tıklandığında enlem ve boylam ile çağrılan bir onMapClick işlevi bulunur. HelloGeoRenderer.kt içinde onMapClick işlevini bulun.

Earth nesnesinin kullanılabildiğinden emin olun.

Dünya'da sabit noktalar oluşturmadan önce Dünya nesnesinin TrackingState değerinin TRACKING olduğundan emin olun. Bu, Dünya'nın konumunun bilindiği anlamına gelir. Ayrıca EarthState öğesinin ENABLED olduğundan, yani Geospatial API ile ilgili herhangi bir sorunla karşılaşılmadığından emin olun. onMapClick içine şu satırları ekleyin:

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

Yeni bağlantının konumunu belirleme

Dünya nesnesinin izleme yaptığını onayladıktan sonra varsa önceki earthAnchor öğesini ayırın. Sonraki adımlarda earthAnchor yerine yeni bir bağlantı ekleyin:

earthAnchor?.detach()

Ardından, yeni sabitleme noktasının yüksekliğini belirlemek için cameraGeospatialPose simgesini kullanın. Haritaya dokunarak elde ettiğiniz koordinat çiftini, sabitleme noktasının konumlandırması 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 jeodezik koordinatlara sabitlenmiş bir Anchor oluşturur. Bu bağlantı, belirtilen koordinatlarda ve yükseklikte sabit kalmaya çalışır.

Yerleştirilen işaretçiyi haritada gösterme

Son olarak, işaretçinin yerleştirildiği yeri gösteren yeni bir işaretçi taşıyın:

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

Deneyin

Android Studio'da Play'i (Oynat) tıklayın. Cihazınızı yukarı kaldırın ve ARCore'un takibi başlatmasına yardımcı olmak için hareket ettirin. Kısa bir süre sonra haritada geçerli konumunuzu gösteren yeşil bir işaretçi görünür.

Haritaya dokunulduğunda, gerçek dünyadaki bir konuma sabitlenen bir bağlantı yerleştirmek için Geospatial API kullanılır. Artırılmış gerçeklik görünümünde görebilmek için sabitleme noktasını mevcut konumunuza yakın bir yere yerleştirmeyi deneyin. Ortamınızda gezinirken sabit kalmalıdır.

Haritaya dokunarak bir işaretçi yerleştirin.

5. Sonuç

Bu codelab'de, Geospatial API'yi kullanarak gerçek dünyayla bağlantılı basit bir AR deneyimi oluşturmayı öğrendiniz.

Haritaya dokunarak bir işaretçi yerleştirin.

İşlediğimiz konular

  • Geospatial API'nin etkinleştirildiği bir Google Cloud projesi oluşturma
  • ARCore projesinde coğrafi bilgi edinme ve bu bilgiyi haritada görüntüleme
  • Coğrafi konumlandırma 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 bilgi için aşağıdaki ek kaynaklara bakın: