Android XR, Geospatial API, और Gemini की मदद से, मिक्स्ड रिएलिटी टूर गाइड बनाना
पढ़ने में 7 मिनट लगेंगे
इस साल के Google I/O में, हमने स्पेशल अनुभवों के लिए एक अपडेट की घोषणा की है. Geospatial API अब ARCore for Jetpack XR में, झलक के तौर पर उपलब्ध है. Google के विज़ुअल पोज़िशनिंग सिस्टम (वीपीएस) को Android XR पर उपलब्ध कराने से, Android XR की मदद से डिजिटल कॉन्टेंट को, असल दुनिया में सटीक तरीके से जोड़ा जा सकता है. साथ ही, यह सुविधा चुनिंदा इलाकों में उपलब्ध है.* Geospatial API की मदद से क्या-क्या किया जा सकता है, यह दिखाने के लिए हमारी टीम ने एक डेमो बनाया है. इसका नाम, XR Geospatial Tour है.
मान लें कि आप किसी नए शहर में घूम रहे हैं. आपने वायर्ड एक्सआर चश्मे (जैसे, आने वाला XREAL Project Aura) पहने हैं और तुरंत आपको एक जानकार स्थानीय गाइड मिल जाती है, जो आपको शहर घुमाती है. आपको 2D मैप को देखने की ज़रूरत नहीं है. इसके बजाय, 3D मॉडल आपको रास्ते दिखाते हैं. साथ ही, एक स्मार्ट वॉइस आपको आपके सामने मौजूद ऐतिहासिक जगहों के बारे में बताती है. हमने Geospatial API, Firebase AI Logic का इस्तेमाल करने वाला Gemini API, Google Maps Grounding, और Jetpack XR SDK को मिलाकर, हाथों का इस्तेमाल किए बिना, इमर्सिव वॉकिंग टूर का अनुभव तैयार किया है.
डिसक्लेमर: वीडियो और टूर गाइड ऐप्लिकेशन सिर्फ़ डेमो के लिए हैं. कुछ सीक्वेंस की अवधि कम की गई है. दिखाया गया हार्डवेयर, डेवलपमेंट के अलग-अलग चरणों में हो सकता है. फ़ाइनल प्रॉडक्ट की जानकारी अलग हो सकती है.
आइए, लागू करने से जुड़ी जानकारी के बारे में जानते हैं. साथ ही, यह भी जानते हैं कि हमने दुनिया भर में स्पेशल अनुभव देने के लिए, इन एपीआई को एक साथ कैसे जोड़ा है.
1. ARCore Geospatial API (वीपीएस) की मदद से, उपयोगकर्ता की सटीक जगह का पता लगाना
जीपीएस और वीपीएस को मिलाकर, एक्सआर पर नेविगेशन का बेहतर अनुभव पाएं. वीपीएस की मदद से मिलने वाली सटीक जानकारी और ओरिएंटेशन की वजह से, 3D वेपॉइंट को असल दुनिया के साथ अलाइन किया जा सकता है.
इसी वजह से, Android XR पर मौजूद Geospatial API की मदद से, कस्टम अनुभव तैयार किए जा सकते हैं. वीपीएस, बेहतर कंप्यूटर विज़न का इस्तेमाल करके, GeospatialPose (जिसमें अक्षांश, देशांतर, और दिशा शामिल है) उपलब्ध कराने की कोशिश करता है. यह जीपीएस से ज़्यादा सटीक होता है.
यहां बताया गया है कि डिवाइस के ओरिएंटेशन को जियोस्पेशल कोऑर्डिनेट पर मैप करके, हम उपयोगकर्ता की जियोस्पेशल पोज़िशन कैसे पाते हैं:
// 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 Grounding का इस्तेमाल किया है.
3. आवाज़ से रास्ता बताने की सुविधा: Gemini 2.5 टीटीएस
टूर गाइड को असल में मौजूद दिखाने के लिए, हमने डाइनैमिक वॉइसओवर की सुविधा लागू की है.
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 का इस्तेमाल करके, हम SpatialBox और SceneCoreEntity का इस्तेमाल करके, Compose यूआई के साथ 3D मॉडल रख सकते हैं. हमने उपयोगकर्ता के टैप का जवाब देने के लिए, InteractableComponent का भी इस्तेमाल किया है.
पारंपरिक Compose यूआई सर्फ़ेस के लिए 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 के डेवलपर किट या हमारे डिसप्ले ग्लास के डेवलपर किट को ऐक्सेस करने के लिए आवेदन किया जा सकता है. ये किट, आने वाले महीनों में उपलब्ध होंगे!
*डिसक्लेमर: यह सुविधा चुनिंदा डिवाइसों पर उपलब्ध है. इंटरनेट कनेक्शन ज़रूरी है. इस सुविधा का इस्तेमाल उन ऐप्लिकेशन और प्लैटफ़ॉर्म पर किया जा सकता है जो इसके साथ काम करते हैं. नतीजे अलग-अलग हो सकते हैं.
-
हम सभी के साथ ऐसा हुआ होगा: आप किसी कम रोशनी वाले कमरे में, अपने पसंदीदा सोशल मीडिया फ़ीड को स्क्रोल कर रहे हैं और अचानक एक एचडीआर वीडियो दिखने लगता है. यह इतना ज़्यादा चमकदार होता है कि आपको आंखें मिचमिचानी पड़ती हैं. ऐसा भी हो सकता है कि आपको कैप्शन पढ़ने के लिए, स्क्रीन की चमक कम करनी पड़े.
Tibian Elsheikh, Jeffrey Jose • पढ़ने में 2 मिनट लगेंगे -
आज हम Android 17 रिलीज़ कर रहे हैं. यह सुविधा, ज़्यादातर Pixel डिवाइसों पर उपलब्ध होगी. आने वाले महीनों में, Android 17 पर चलने वाले नए डिवाइसों के बारे में जानें.
Matthew McCullough • पढ़ने में 13 मिनट लगेंगे -
प्रॉडक्ट से जुड़ी खबरेंGoogle Play पर, हमारा लक्ष्य उपयोगकर्ताओं को सबसे बढ़िया अनुभव देना है. साथ ही, यह पक्का करना है कि डेवलपर के पास सफल होने के लिए ज़रूरी टूल और अडैप्टेबिलिटी हो.
Paul Feng • पढ़ने में 3 मिनट लगेंगे
हर हफ़्ते, Android डेवलपमेंट से जुड़ी अहम जानकारी अपने इनबॉक्स में पाएं.