Android XR, Geospatial API, और Gemini की मदद से, मिक्स्ड रिएलिटी टूर गाइड बनाना

पढ़ने में 7 मिनट लगेंगे
3 लेखक
Coco Fatus, Alon Hetzroni, Azin Mehrnoosh

इस साल के Google I/O में, हमने स्पेशल एक्सपीरियंस के लिए एक अपडेट का एलान किया था: Geospatial API अब ARCore for Jetpack XR में प्रीव्यू के तौर पर उपलब्ध है. Android XR में Google के विज़ुअल पोज़िशनिंग सिस्टम (वीपीएस) को शामिल किया गया है. इससे Android XR, डिजिटल कॉन्टेंट को असल दुनिया से जोड़ पाता है. साथ ही, यह कॉन्टेंट को एक मीटर से भी कम दूरी पर सटीक तरीके से ओरिएंट कर पाता है. हालांकि, यह सुविधा सिर्फ़ उन इलाकों में उपलब्ध है जहां वीपीएस काम करता है.* जियोस्पेशल एपीआई की क्षमताओं को दिखाने के लिए, हमारी टीम ने एक डेमो बनाया है: XR Geospatial Tour.

कल्पना करें कि आप किसी नए शहर में घूम रहे हैं. आपने तार वाले एक्सआर स्मार्ट ग्लास (जैसे कि XREAL का आने वाला प्रोजेक्ट ऑरा) पहने हैं. अब आपको तुरंत एक जानकार लोकल गाइड मिल जाती है, जो आपको शहर के बारे में बताती है. आपको 2D मैप को देखने की ज़रूरत नहीं है. इसके बजाय, 3D मॉडल आपको रास्ते के बारे में बताते हैं. साथ ही, एक स्मार्ट वॉइस आपको ऐतिहासिक जगहों के बारे में जानकारी देती है. हमने जियोस्पेशल एपीआईFirebase AI लॉजिक का इस्तेमाल करने वाला Gemini APIGoogle Maps Grounding, और Jetpack XR SDK को मिलाकर, बिना हाथ का इस्तेमाल किए चलने-फिरने के दौरान शानदार अनुभव देने वाला ऐप्लिकेशन बनाया है.

 

 

डिसक्लेमर: वीडियो और टूर गाइड ऐप्लिकेशन सिर्फ़ दिखाने के लिए हैं. कुछ दृश्यों की अवधि कम की गई है. दिखाया गया कोई भी हार्डवेयर, डेवलपमेंट के चरण में हो सकता है. प्रॉडक्ट की फ़ाइनल जानकारी अलग हो सकती है.

आइए, हम आपको इन एपीआई को लागू करने के बारे में जानकारी देते हैं. साथ ही, यह भी बताते हैं कि हमने दुनिया भर के लोगों के लिए, बेहतर अनुभव देने वाला ऐप्लिकेशन बनाने के लिए इन एपीआई को एक साथ कैसे इस्तेमाल किया.

1. ARCore Geospatial API (VPS) की मदद से उपयोगकर्ता की सटीक जगह का पता लगाना

जीपीएस और वीपीएस की मदद से, XR पर नेविगेशन के अनुभव को बेहतर बनाएं. वीपीएस की मदद से, सटीक ओरिएंटेशन और जगह की जानकारी मिलती है. इससे 3D वेपॉइंट को असल दुनिया के साथ अलाइन किया जा सकता है.

इसलिए, Android XR पर Geospatial API की मदद से, अपनी पसंद के मुताबिक अनुभव बनाए जा सकते हैं. VPS, अडवांस कंप्यूटर विज़न का इस्तेमाल करके, जियोस्पेशल पोज़ (इसमें अक्षांश, देशांतर, और हेडिंग शामिल है) की जानकारी देता है. यह जानकारी, जीपीएस से ज़्यादा सटीक होती है.

यहां बताया गया है कि हम डिवाइस के ओरिएंटेशन को जियोस्पेशल कोऑर्डिनेट पर मैप करके, उपयोगकर्ता की जियोस्पेशल पोज़ की जानकारी कैसे पाते हैं:

// 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}")
}

इस सुविधा के सही तरीके से काम करने के लिए, horizontalAccuracy और orientationYawAccuracy का सटीक होना ज़रूरी है. इसलिए, हम इन दोनों पर तब तक नज़र रखते हैं, जब तक ये हमारे थ्रेशोल्ड को पूरा नहीं कर लेते. अगर उपयोगकर्ता घर के अंदर है या किसी ऐसी जगह पर है जिसकी पहचान नहीं हो पा रही है, तो हम उसे "किसी सार्वजनिक जगह पर जाकर, चारों ओर देखने" के लिए कहते हैं.

2. Gemini API और Google Maps Grounding की मदद से यात्रा की योजना बनाना

जगह की जानकारी मिलने के बाद, हम Firebase AI Logic का इस्तेमाल करके Gemini API का इस्तेमाल करते हैं. इससे Gemini मॉडल को लोकल टूर गाइड के तौर पर काम करने का प्रॉम्प्ट मिलता है. हम उपयोगकर्ता के निर्देशांकों को मॉडल को भेजते हैं और उससे स्ट्रक्चर्ड JSON फ़ॉर्मैट में जवाब देने के लिए कहते हैं. इस जवाब में, आस-पास की पैदल यात्राओं की जानकारी शामिल होती है:

   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.")

लार्ज लैंग्वेज मॉडल, बेहतर ब्यौरे जनरेट करने में काफ़ी मददगार होते हैं. हालांकि, कभी-कभी ये अक्षांश/देशांतर के सटीक निर्देशांकों की गलत जानकारी दे सकते हैं. इस समस्या को हल करने के लिए, हमने एआई को Google Maps से जानकारी लेने की सुविधा का इस्तेमाल करके जानकारी दी.

3. आपकी मदद के लिए आवाज़: Gemini 2.5 TTS

टूर गाइड को ज़्यादा से ज़्यादा लोगों तक पहुंचाने के लिए, हमने डाइनैमिक वॉइसओवर की सुविधा लागू की.

gemini-2.5-flash-tts model का इस्तेमाल करके, हम अपने मॉडल जनरेशन कॉन्फ़िगरेशन को कॉन्फ़िगर कर सकते हैं, ताकि वह सिर्फ़ टेक्स्ट के बजाय ऑडियो डेटा भी दिखा सके! ResponseModality.AUDIO का अनुरोध करने का तरीका यहां बताया गया है:

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 की मदद से, 3D में जान डालना

पज़ल का आखिरी हिस्सा यह है कि इस डेटा को उपयोगकर्ता के फ़ील्ड ऑफ़ व्यू में रेंडर किया जाए. Jetpack XR SDK की मदद से, 2D Android यूज़र इंटरफ़ेस (यूआई) से स्पेशल कंप्यूटिंग पर आसानी से स्विच किया जा सकता है.

हमने स्पेशल कॉम्पोनेंट बनाने के लिए, XR के लिए Jetpack Compose का इस्तेमाल किया. टूर के दौरान दिलचस्पी की जगहों को दिखाने के लिए, हमने InfoSphere नाम का एक कंपोज़ेबल बनाया है. इसमें 3D ऑर्ब का GltfModel होता है, जो स्पेस में तैरता है. इसके साथ इंटरैक्ट करके जानकारी देखी जा सकती है.

Jetpack XR SDK का इस्तेमाल करके, Compose UI के साथ 3D मॉडल रखे जा सकते हैं. इसके लिए, SpatialBox और SceneCoreEntity का इस्तेमाल किया जाता है. हमने उपयोगकर्ता के टैप का जवाब देने के लिए, InteractableComponent का भी इस्तेमाल किया.

हमने पारंपरिक Compose UI प्लैटफ़ॉर्म के लिए AnimatedSpatialVisibility को SceneCoreEntity 3D एलिमेंट के साथ जोड़ा है. इससे हम डेटा को आसानी से फ़िज़िकल दुनिया में ब्लेंड कर पाते हैं.

@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 की मदद से आज क्या-क्या किया जा सकता है

XR Geospatial Tour ऐप्लिकेशन बनाने से हमें पता चला कि दुनिया भर में स्पेशल एक्सपीरियंस देने वाले ऐप्लिकेशन बनाने के लिए, Android डेवलपर को पहले से कम चुनौतियों का सामना करना पड़ता है. Android XR पर Geospatial API का प्रीव्यू वर्शन उपलब्ध है. इससे आपके ऐप्लिकेशन, अपने आस-पास की दुनिया को आसानी से समझ सकते हैं. Compose for XR के एपीआई को वीपीएस के सटीक जगह की जानकारी देने वाले डेटा और Gemini की जनरेटिव क्षमताओं के साथ जोड़कर, हम ऐसे अनुभव बना सकते हैं जो यह समझ सकें कि उपयोगकर्ता कहां है और वह क्या देख रहा है.

Android XR का इस्तेमाल करने में आपकी मदद करने के लिए, हमें Android XR Developer Catalyst Program के लिए आवेदन स्वीकार करते हुए खुशी हो रही है. इसमें XREAL Project Aura शामिल है. आज से, XREAL Project Aura devkit या डिसप्ले ग्लास devkit का ऐक्सेस पाने के लिए आवेदन किया जा सकता है. आपको यह ऐक्सेस आने वाले महीनों में मिलेगा! 

*डिसक्लेमर: यह सुविधा चुनिंदा डिवाइसों पर उपलब्ध है. इंटरनेट कनेक्शन ज़रूरी है. इस सुविधा का इस्तेमाल उन ऐप्लिकेशन और प्लैटफ़ॉर्म पर किया जा सकता है जो इसके साथ काम करते हैं. नतीजे अलग-अलग हो सकते हैं. 

लेखक:
पढ़ना जारी रखें
  • Tibian Elsheikh की प्रोफ़ाइल देखें जेफ़्री जोस की प्रोफ़ाइल देखें

    Eclipsa Video: HDR That Looks Right on Every Screen

    हम सभी कभी न कभी इस स्थिति से गुज़रे हैं: आपने कम रोशनी वाले कमरे में अपने पसंदीदा सोशल मीडिया फ़ीड को स्क्रोल किया और अचानक एक एचडीआर वीडियो दिखने लगा. स्क्रीन की रोशनी इतनी ज़्यादा हो कि आपको आंखें छोटी करनी पड़ें या आपको कैप्शन पढ़ने के लिए, स्क्रीन की रोशनी कम करनी पड़े.

    Tibian Elsheikh, Jeffrey Jose दो मिनट में पढ़ें
  • मैथ्यू मैककलो की प्रोफ़ाइल देखें

    पेश है Android 17

    आज हम Android 17 को रिलीज़ कर रहे हैं. यह सुविधा, Android 17 के साथ काम करने वाले ज़्यादातर Pixel डिवाइसों पर उपलब्ध होगी. आने वाले महीनों में, Android 17 पर काम करने वाले नए डिवाइसों के बारे में जानें.

    Matthew McCullough पढ़ने में 13 मिनट लगेंगे
  • ज़ोई लोपेज़-लैटोर की प्रोफ़ाइल देखें
    प्रॉडक्ट से जुड़ी खबरें

    Android के लिए एलएलएम को मेज़र करने के तरीके में बदलाव: Android Bench का नया दौर

    हमने मार्च में, Android Bench लॉन्च किया था. यह असल दुनिया के Android डेवलपमेंट टास्क के लिए, हमारा एलएलएम लीडरबोर्ड है. इसके बाद से, हमने आपके सुझाव, शिकायत या राय के आधार पर बेंचमार्क को बेहतर बनाया है. इसमें ओपन-वेट मॉडल का आकलन करना और लीडरबोर्ड में लागत और परफ़ॉर्मेंस के डाइमेंशन जोड़ना शामिल है.

    Zoe Lopez-Latorre तीन मिनट में पढ़ा जा सकता है