Ürün Haberleri

Android XR, Geospatial API ve Gemini ile Karma Gerçeklik Tur Rehberi Oluşturma

Okuma süresi: 6 dk.

Bu yılki Google I/O'da, üç boyutlu deneyimlerle ilgili bir güncelleme duyurduk: Geospatial API artık Jetpack XR için ARCore'da önizleme olarak kullanılabiliyor. Android XR, Google'ın Görsel Konumlandırma Sistemi'ni (VPS) Android XR'a getirerek dijital içeriğin fiziksel dünyaya bir metreden daha az bir doğrulukla ve desteklenen alanlarda hassas yönlendirmeyle sabitlenmesini sağlar.* Ekibimiz, Geospatial API'nin neler sunabileceğini keşfetmek için XR Geospatial Tour adında bir demo oluşturdu.

Yeni bir şehre gittiğinizi, kablolu XR gözlüklerinizi (yakında çıkacak XREAL Project Aura gibi) taktığınızı ve bilgili bir yerel rehberin size anında etrafı gezdirdiğini hayal edin. 2D haritaya bakmanız gerekmez. Bunun yerine, 3D modeller yolunuzu nazikçe gösterir ve akıllı bir ses, hemen önünüzdeki tarihi yerler hakkında bilgi verir. Eller serbest, sürükleyici bir yürüyüş turu deneyimi oluşturmak için Geospatial API'leri, Firebase AI Logic kullanan Gemini API, Google Haritalar Temellendirmesi ve Jetpack XR SDK'yı birleştirdik.

Sorumluluk reddi beyanı: Video ve Tur Rehberi uygulaması yalnızca tanıtım amaçlıdır. Bazı adımlar kısaltılmıştır. Gösterilen donanımlar geliştirme aşamasında olabilir; nihai ürün ayrıntıları farklılık gösterebilir.

Uygulama ayrıntılarını inceleyelim ve dünya ölçeğinde bir mekansal deneyim oluşturmak için bu API'leri nasıl bir araya getirdiğimizi gösterelim.

1. ARCore Geospatial API (VPS) ile Kullanıcıyı Belirleme

GPS'nin gücünü VPS'nin hassasiyetiyle birleştirerek XR'daki gezinme deneyiminizi iyileştirin. VPS'nin sağladığı doğruluk ve hassas yönlendirme, 3 boyutlu yol noktalarının fiziksel dünyayla uyumlu olmasını sağlar.

Bu nedenle, Android XR'daki Geospatial API, özel deneyimler oluşturmanıza yardımcı olabilir. VPS, gelişmiş bilgisayar görüntüleme teknolojisini kullanarak GPS'ten daha doğru bir GeospatialPose (enlem, boylam ve yön dahil) sağlamaya çalışır.

Cihazın yönünü coğrafi koordinatla eşleyerek kullanıcının coğrafi uzamsal duruşunu nasıl aldığımızı aşağıda açıklıyoruz:

// Retrieve the current geospatial pose from the ARCore session
val result = geospatial.createGeospatialPoseFromPose(arDevice.state.value.devicePose)
if (result is CreateGeospatialPoseFromPoseSuccess) {
    val pose = result.pose
    Log.d("VPS", "Accurate Location: ${pose.latitude}, ${pose.longitude}")
}

Tüm deneyim bu doğruluğa dayandığından, eşiklerimize ulaşana kadar horizontalAccuracy ve orientationYawAccuracy değerlerini izleriz. Kullanıcı kapalı bir alandaysa veya tanınmayan bir bölgedeyse "açık bir alana gidip etrafına bakması" istenir.

2. Gemini API ve Google Haritalar Temellendirme ile Seyahat Planı Oluşturma

Konum bilgisi alındıktan sonra, Gemini modeline yerel bir tur rehberi gibi davranması için Firebase AI Logic'i kullanarak Gemini API'yi kullanırız. Kullanıcının koordinatlarını modele iletiyor ve yakındaki yürüyüş turlarını içeren yapılandırılmış bir JSON yanıtı vermesini istiyoruz:

   val configForTools = ToolConfig(
      functionCallingConfig = null,
      retrievalConfig = retrievalConfig {
        latLng = FirebaseLatLng(pose.latitude, pose.longitude)
        languageCode = "en"
      }
    )

    val responseJsonSchema = Schema.obj(
      mapOf(
        "locationIntro" to Schema.string(),
        "tours" to Schema.array(
          Schema.obj(
            mapOf(
              "title" to Schema.string(),
              "description" to Schema.string(),
              "stops" to Schema.array(
                Schema.obj(
                  mapOf(
                    "name" to Schema.string(),
                    "detailedName" to Schema.string(),
                    "description" to Schema.string()
                  )
                )
              )
            )
          )
        )
      )
    )

    val model = Firebase.ai(backend = GenerativeBackend.googleAI()).generativeModel(
      modelName = "gemini-3.5-flash",
      tools = listOf(Tool.googleMaps()),
      generationConfig = generationConfig {
        responseMimeType = "application/json"
        responseSchema = responseJsonSchema
      }
    )

   val result = model.generateContent("The user is at latitude ${pose.latitude} and longitude ${pose.longitude}. Generate exactly 3 diverse tours near this location (e.g., historical, food, nature). All tour ideas should be walking distance only.")

Büyük dil modelleri, ayrıntılı açıklamalar oluşturma konusunda harika olsa da bazen tam enlem/boylam koordinatları konusunda halüsinasyon görebilirler. Bu sorunu çözmek için yapay zekayı Google Haritalar'a dayandırdık.

3. Size Yol Gösterecek Bir Ses: Gemini 2.5 TTS

Tur rehberinin gerçekten orada olduğu hissini vermek için dinamik seslendirmeler kullandık.

gemini-2.5-flash-tts model kullanarak model oluşturma yapılandırmamızı yalnızca metin yerine ses verilerini yerel olarak döndürecek şekilde yapılandırabiliriz. ResponseModality.AUDIO için nasıl istekte bulunabileceğiniz aşağıda açıklanmıştır:

val ttsModel = Firebase.ai(backend = GenerativeBackend.googleAI())
    .generativeModel(
        modelName = "gemini-2.5-flash-tts",
        generationConfig = generationConfig {
            // Instruct the model to return Audio
            responseModalities = listOf(ResponseModality.AUDIO)
        }
    )

val response = ttsModel.generateContent("Say in a neutral but positive voice:\n$prompt")

// Extract the raw audio bytes from the response
val audioBytes = response.candidates.firstOrNull()?.content?.parts
    ?.filterIsInstance<InlineDataPart>()
    ?.firstOrNull { it.mimeType.contains("audio") }?.inlineData

4. Jetpack XR ile 3D olarak hayata geçirme

Yapbozun son parçası, bu verileri kullanıcının görüş alanında oluşturmaktır. Jetpack XR SDK'sı, 2D Android kullanıcı arayüzünden uzamsal bilişime geçişi kolaylaştırır.

Uzamsal bileşenler oluşturmak için XR için Jetpack Compose'u kullandık. Tur boyunca ilgi çekici noktaları temsil etmek için InfoSphere adlı bir Composable oluşturduk. Bu Composable, uzayda yüzen ve bilgi göstermek için etkileşime girilebilen 3D küre GltfModel'ini içerir.

Jetpack XR SDK'yı kullanarak SpatialBox ve SceneCoreEntity ile Compose kullanıcı arayüzünün yanına 3D modeller yerleştirebiliriz. Ayrıca, kullanıcı dokunmalarına yanıt vermek için InteractableComponent'ı kullandık.

Geleneksel Compose kullanıcı arayüzü yüzeyleri için AnimatedSpatialVisibility'yi SceneCoreEntity 3D öğeleriyle birleştirerek verileri fiziksel dünyaya sorunsuz bir şekilde entegre edebiliyoruz.

@Composable
fun InfoSphere(
    content: InfoBubbleContent,
    session: Session,
    sphereModel: GltfModel,
    isSelected: Boolean,
    onClick: () -> Unit
) {
    // SpatialBox lets us arrange 3D components and SpatialPanels together
    SpatialBox(
        SubspaceModifier
            .offset(x = 2.dp, y = 1.dp, z = (-3).dp) // Positioned in 3D space
    ) {
        // Smoothly animate the visibility of our 2D Compose UI Panel
        AnimatedSpatialVisibility(visible = isSelected) {
            SpatialPanel {
                InfoBubble(content) // Regular 2D Compose UI
            }
        }
        // Render our interactive 3D sphere
        SceneCoreEntity(
            factory = {
                GltfModelEntity.create(session, sphereModel).also { entity ->
                    // Make the 3D model respond to user taps
                    entity.addComponent(InteractableComponent.create(session) { inputEvent ->
                        if (inputEvent.action == InputEvent.Action.UP) {
                            onClick()
                        }
                    })
                }
            }
        )
    }
}

Android XR ile neler yapabileceğinizi hemen keşfedin

XR Geospatial Tour uygulamasını oluşturmak, Android geliştiriciler için dünya ölçeğinde mekansal deneyimlere giriş engelinin hiç olmadığı kadar düşük olduğunu gösterdi. Android XR'da artık önizleme sürümüyle kullanılabilen Geospatial API sayesinde uygulamalarınız çevrelerindeki fiziksel dünyayı sorunsuz bir şekilde anlayabilir. Compose for XR'ın API'lerini VPS'nin yüksek hassasiyetli konum verileri ve Gemini'ın üretken özellikleriyle birleştirerek kullanıcının nerede olduğunu ve neye baktığını anlayan deneyimler oluşturabiliriz.

Android XR'ı deneyimlemenize yardımcı olmak için XREAL Project Aura'yı da içeren Android XR Developer Catalyst Programı'na başvuruları açmaktan heyecan duyuyoruz. Bugünden itibaren, önümüzdeki aylarda XREAL Project Aura geliştirici kitine veya görüntü arabirimli gözlük geliştirici kitimize erişmek için başvurabilirsiniz. 

*Sorumluluk reddi beyanı: Belirli cihazlarda kullanılabilir. İnternet bağlantısı gerekir. Uyumlu uygulamalarda ve cihazlarda çalışır. Sonuçlar değişiklik gösterebilir. 

Okumaya devam et