एआई चश्मे की सुविधा, मौजूदा Android Activity फ़्रेमवर्क
एपीआई पर आधारित है. साथ ही, इसमें कुछ और कॉन्सेप्ट शामिल हैं, ताकि एआई चश्मे की खास सुविधाओं को सपोर्ट किया जा सके. XR हेडसेट, डिवाइस पर पूरा APK चलाते हैं. हालांकि, एआई चश्मे में एक खास गतिविधि होती है, जो आपके फ़ोन के मौजूदा ऐप्लिकेशन में चलती है. यह गतिविधि, होस्ट डिवाइस से एआई चश्मे पर प्रोजेक्ट की जाती है.
अपने ऐप्लिकेशन के लिए, एआई चश्मे की सुविधा बनाने के लिए, आपको अपने मौजूदा फ़ोन ऐप्लिकेशन को बढ़ाना होगा. इसके लिए, एआई चश्मे के लिए नया प्रोजेक्टेड Activity बनाएं. यह गतिविधि, एआई चश्मे पर आपके ऐप्लिकेशन को लॉन्च करने के मुख्य एंट्री पॉइंट के तौर पर काम करती है. इस तरीके से डेवलपमेंट आसान हो जाता है, क्योंकि फ़ोन और एआई चश्मे के लिए, कारोबार से जुड़े लॉजिक को शेयर और फिर से इस्तेमाल किया जा सकता है.
वर्शन के साथ काम करने वाली सुविधाएं
Jetpack XR SDK के लिए, Android SDK के साथ काम करने से जुड़ी ज़रूरी शर्तें देखें.
डिपेंडेंसी
एआई ग्लास के लिए, ये लाइब्रेरी डिपेंडेंसी जोड़ें:
Groovy
dependencies { implementation "androidx.xr.runtime:runtime:1.0.0-alpha11" implementation "androidx.xr.glimmer:glimmer:1.0.0-alpha06" implementation "androidx.xr.projected:projected:1.0.0-alpha04" implementation "androidx.xr.arcore:arcore:1.0.0-alpha10" }
Kotlin
dependencies { implementation("androidx.xr.runtime:runtime:1.0.0-alpha11") implementation("androidx.xr.glimmer:glimmer:1.0.0-alpha06") implementation("androidx.xr.projected:projected:1.0.0-alpha04") implementation("androidx.xr.arcore:arcore:1.0.0-alpha10") }
अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में, अपनी गतिविधि का एलान करें
अन्य गतिविधियों की तरह ही, आपको अपनी गतिविधि को ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में शामिल करना होगा, ताकि सिस्टम उसे देख सके और चला सके.
<application>
<activity
android:name="com.example.xr.projected.GlassesMainActivity"
android:exported="true"
android:requiredDisplayCategory="xr_projected"
android:label="Example AI Glasses activity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
</application>
कोड के बारे में मुख्य बातें
- सिस्टम को यह बताने के लिए कि इस गतिविधि में
android:requiredDisplayCategoryएट्रिब्यूट के लिएxr_projectedका इस्तेमाल किया जाना चाहिए, ताकि कनेक्ट किए गए डिवाइस के हार्डवेयर को ऐक्सेस करने के लिए अनुमानित कॉन्टेक्स्ट का इस्तेमाल किया जा सके.
अपनी गतिविधि बनाना
इसके बाद, आपको एक छोटी गतिविधि बनानी होगी. इससे, डिसप्ले चालू होने पर एआई चश्मे पर कुछ दिखाया जा सकेगा.
@OptIn(ExperimentalProjectedApi::class) class GlassesMainActivity : ComponentActivity() { private var displayController: ProjectedDisplayController? = null private var isVisualUiSupported by mutableStateOf(false) private var areVisualsOn by mutableStateOf(true) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) lifecycle.addObserver(object : DefaultLifecycleObserver { override fun onDestroy(owner: LifecycleOwner) { displayController?.close() displayController = null } }) lifecycleScope.launch { // Check device capabilities val projectedDeviceController = ProjectedDeviceController.create(this@GlassesMainActivity) isVisualUiSupported = projectedDeviceController.capabilities.contains(CAPABILITY_VISUAL_UI) val controller = ProjectedDisplayController.create(this@GlassesMainActivity) displayController = controller val observer = GlassesLifecycleObserver( context = this@GlassesMainActivity, controller = controller, onVisualsChanged = { visualsOn -> areVisualsOn = visualsOn } ) lifecycle.addObserver(observer) } setContent { GlimmerTheme { HomeScreen( areVisualsOn = areVisualsOn, isVisualUiSupported = isVisualUiSupported, onClose = { finish() } ) } } } }
कोड के बारे में मुख्य बातें
- यह कुकी, Jetpack Projected लाइब्रेरी से एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई का इस्तेमाल करने के लिए ऑप्ट-इन करती है.
GlassesMainActivity,ComponentActivityको बढ़ाता है. यह मोबाइल डेवलपमेंट में भी ऐसा ही करता है.- सभी एआई चश्मों में डिसप्ले नहीं होता है. इसलिए,
ProjectedDeviceControllerका इस्तेमाल करके यह जांच करता है कि डिवाइस में डिसप्ले है या नहीं. onCreateफ़ंक्शन में मौजूदsetContentब्लॉक, ऐक्टिविटी के लिए कंपोज़ेबल यूज़र इंटरफ़ेस (यूआई) ट्री का रूट तय करता है.HomeScreenकंपोज़ेबल को Jetpack Compose Glimmer का इस्तेमाल करके लागू किया जाएगा.- यह ऐक्टिविटी के
onCreateमेथड के दौरान यूज़र इंटरफ़ेस (यूआई) को शुरू करता है. इसके बारे में जानने के लिए, प्रोजेक्ट की गई ऐक्टिविटी की लाइफ़साइकल देखें.
ऐप्लिकेशन बनाने की सुविधा लागू करना
आपने जो गतिविधि बनाई है वह HomeScreen कंपोज़ेबल फ़ंक्शन को रेफ़र करती है. आपको इसे लागू करना होगा. नीचे दिए गए कोड में, Jetpack Compose Glimmer का इस्तेमाल किया गया है. इससे एक ऐसा कंपोज़ेबल तय किया जा सकता है जो एआई ग्लास के डिसप्ले पर कुछ टेक्स्ट दिखा सके:
@Composable fun HomeScreen( areVisualsOn: Boolean, isVisualUiSupported: Boolean, onClose: () -> Unit, modifier: Modifier = Modifier ) { Box( modifier = modifier .surface(focusable = false) .fillMaxSize(), contentAlignment = Alignment.Center ) { if (isVisualUiSupported) { Card( title = { Text("Android XR") }, action = { Button(onClick = onClose) { Text("Close") } } ) { if (areVisualsOn) { Text("Hello, AI Glasses!") } else { Text("Display is off. Audio guidance active.") } } } else { Text("Audio Guidance Mode Active") } } }
कोड के बारे में मुख्य बातें
- आपने अपनी गतिविधि में बताया था कि
HomeScreenफ़ंक्शन में, कंपोज़ेबल कॉन्टेंट शामिल होता है. यह कॉन्टेंट, एआई चश्मे का डिसप्ले चालू होने पर उपयोगकर्ता को दिखता है. - Jetpack Compose Glimmer
Textकॉम्पोनेंट, चश्मे की स्क्रीन पर "नमस्ते, एआई चश्मे!" टेक्स्ट दिखाता है. - Jetpack Compose Glimmer
Button, एआई ग्लास पर की गई गतिविधि को बंद कर देता है. इसके लिए, वहonCloseके ज़रिएfinish()को कॉल करता है.
देखें कि एआई चश्मा कनेक्ट है या नहीं
यह पता लगाने के लिए कि आपकी गतिविधि लॉन्च करने से पहले, किसी उपयोगकर्ता के एआई चश्मे उसके फ़ोन से कनेक्ट हैं या नहीं, ProjectedContext.isProjectedDeviceConnected तरीके का इस्तेमाल करें. यह तरीका, Flow<Boolean> दिखाता है. आपका ऐप्लिकेशन इसे देखकर, कनेक्शन की स्थिति के बारे में रीयल-टाइम अपडेट पा सकता है.
अपनी गतिविधि शुरू करना
आपने बुनियादी गतिविधि बना ली है. अब इसे अपने चश्मे पर लॉन्च किया जा सकता है. चश्मे के हार्डवेयर को ऐक्सेस करने के लिए, आपके ऐप्लिकेशन को अपनी गतिविधि शुरू करनी होगी. इसके लिए, उसे कुछ खास विकल्पों का इस्तेमाल करना होगा. इन विकल्पों से सिस्टम को प्रोजेक्ट किए गए कॉन्टेक्स्ट का इस्तेमाल करने के बारे में पता चलता है. इसे यहां दिए गए कोड में दिखाया गया है:
val options = ProjectedContext.createProjectedActivityOptions(context) val intent = Intent(context, GlassesMainActivity::class.java) context.startActivity(intent, options.toBundle())
ProjectedContext में मौजूद createProjectedActivityOptions तरीके से, अनुमानित कॉन्टेक्स्ट में अपनी गतिविधि शुरू करने के लिए ज़रूरी विकल्प जनरेट किए जाते हैं.
context पैरामीटर, फ़ोन या चश्मे के डिवाइस का कॉन्टेक्स्ट हो सकता है.
अगले चरण
आपने एआई चश्मे के लिए पहली गतिविधि बना ली है. अब इसकी सुविधाओं को बढ़ाने के अन्य तरीके जानें:
- लिखे गए शब्दों को सुनने की सुविधा का इस्तेमाल करके ऑडियो आउटपुट को मैनेज करना
- अपने-आप बोली पहचानने की सुविधा का इस्तेमाल करके ऑडियो इनपुट को मैनेज करना
- Jetpack Compose Glimmer की मदद से यूज़र इंटरफ़ेस (यूआई) बनाना
- एआई ग्लास के हार्डवेयर को ऐक्सेस करना