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
- Geliştirme makinenize USB kablosuyla bağlanmış, USB üzerinden hata ayıklama ile yapılandırılmış, desteklenen bir ARCore Android cihaz.
- Android Studio yüklü ve Android uygulamaları oluşturmak için yapılandırılmıştır.
- AR için Google Play Hizmetleri Android geliştirme cihazında yüklü 1.31 veya sonraki bir sürüm.
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.
- 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.
- 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.
- 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.
- Uygun bir Proje adı girin (ör. "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şturma) sayfasını ziyaret edin.
- Gerekli API'leri etkinleştirin:
- 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:
- Uygulamayı açın > src > AndroidManifest.xml dosyası olarak indirin.
- Ş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
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.
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.
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.
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.
İş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: