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
- Geliştirme makinenize USB kablosuyla bağlanan ve USB hata ayıklaması ile yapılandırılmış desteklenen bir ARCore Android cihazı.
- Android Studio'nun yüklenmesi ve Android uygulamaları derlemesi için yapılandırılmış olması.
- AR için Google Play Hizmetleri 1.31 veya sonraki bir sürüm (Android geliştirme cihazında yüklüdür.)
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.
- 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.
- 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.
- 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.
- Uygun bir Proje adı girin (örneğin, "ARCore Geospatial API projesi") ve herhangi bir konum seçin.
- Oluştur'u tıklayın.
- Create a project in Google Cloud Platform (Google Cloud Platform'da proje oluşturun) bölümünü ziyaret edin.
- Gerekli API'ları etkinleştirin:
- 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:
- app > src > AndroidManifest.xml dosyasını açın.
- Ş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" />
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.
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.
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.
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.
İş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: