एआई चश्मे के लिए अपनी पहली गतिविधि बनाना

एक्सआर की सुविधा वाले डिवाइस
इस गाइड की मदद से, इन तरह के एक्सआर डिवाइसों के लिए अनुभव बनाए जा सकते हैं.
एआई चश्मा

एआई चश्मे की सुविधा, मौजूदा 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-alpha07"
    implementation "androidx.xr.projected:projected:1.0.0-alpha05"
    implementation "androidx.xr.arcore:arcore:1.0.0-alpha11"
}

Kotlin

dependencies {
    implementation("androidx.xr.runtime:runtime:1.0.0-alpha11")
    implementation("androidx.xr.glimmer:glimmer:1.0.0-alpha07")
    implementation("androidx.xr.projected:projected:1.0.0-alpha05")
    implementation("androidx.xr.arcore:arcore:1.0.0-alpha11")
}

अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में, अपनी गतिविधि का एलान करें

अन्य गतिविधियों की तरह ही, आपको अपनी गतिविधि को ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में शामिल करना होगा, ताकि सिस्टम उसे देख सके और चला सके.

<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 पैरामीटर, फ़ोन या चश्मे के डिवाइस का कॉन्टेक्स्ट हो सकता है.

अगले चरण

आपने एआई चश्मे के लिए पहली गतिविधि बना ली है. अब इसकी सुविधाओं को बढ़ाने के अन्य तरीके जानें: