एआई चश्मे के लिए, रनटाइम के दौरान डिवाइस की उपलब्धता की जांच करना

कोई उपयोगकर्ता जब अपने दिन की शुरुआत करता है, तो ऐसा हो सकता है कि उसके एआई चश्मे का कनेक्शन होस्ट डिवाइस (जैसे कि उपयोगकर्ता का फ़ोन) से टूट जाए. इसके अलावा, अगर उपयोगकर्ता चश्मा उतारता है, तो हो सकता है कि वह कुछ समय के लिए उपलब्ध न हो. डिवाइस की उपलब्धता में होने वाले इस तरह के बदलावों को ध्यान में रखते हुए, आपका ऐप्लिकेशन XR Device Availability API का इस्तेमाल कर सकता है. यह एपीआई, डिवाइस की उपलब्धता के सिग्नल को Android की स्टैंडर्ड Lifecycle.State वैल्यू में जोड़ता है. ऑडियो राउटिंग और हॉटवर्ड चालू करने की सुविधा को मैनेज करने के लिए, इस एपीआई का इस्तेमाल करें. साथ ही, यह जानने के लिए भी इसका इस्तेमाल करें कि एआई चश्मे के उपलब्ध होने पर, उपयोगकर्ता से इनपुट कब मिलने की उम्मीद की जा सकती है.

लाइफ़साइकल की स्थितियों के बारे में जानकारी

यहां दी गई टेबल में, यह बताया गया है कि डिवाइस की उपलब्धता के सिग्नल, Lifecycle.State वैल्यू से कैसे मैप होते हैं.

लाइफ़साइकल की स्थिति

डिवाइस की स्थिति

ब्यौरा

INITIALIZED

बनाया गया

लाइफ़साइकल ऑब्जेक्ट बनाया गया है, लेकिन अभी तक इसे देखा नहीं गया है.

CREATED

बंद है

सेवा कनेक्ट है, लेकिन उपयोगकर्ता ने डिवाइस नहीं पहना है.

STARTED

चालू है

उपयोगकर्ता ने डिवाइस पहना है.

DESTROYED

डिसकनेक्ट किया गया

डिवाइस डिसकनेक्ट हो गया है या सेवा का कनेक्शन टूट गया है.

डिवाइस की उपलब्धता की जांच करना और इस पर नज़र रखना

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

    val xrDevice = XrDevice.getCurrentDevice(projectedContext)

    xrDevice.getLifecycle().currentStateFlow
        .takeWhile { it != Lifecycle.State.DESTROYED }
        .collect { state ->
            when (state) {
                Lifecycle.State.STARTED -> { /* Device is ACTIVE (worn) */ }
                Lifecycle.State.CREATED -> { /* Device is INACTIVE (not worn) */ }
                else -> { /* Handle other states */ }
            }
        }
}

कोड के बारे में अहम बातें

  • कनेक्शन की जांच करना: डिवाइस की लाइफ़साइकल को ऐक्सेस करने से पहले, यह पुष्टि करने के लिए ProjectedContext.isProjectedDeviceConnected को कॉल करें कि प्रोजेक्ट किया गया डिवाइस, होस्ट डिवाइस से कनेक्ट है या नहीं.
  • ProjectedContext पाना: कनेक्शन की पुष्टि करने के बाद ही, ProjectedContext.createProjectedDeviceContext को कॉल करें. साथ ही, पक्का करें कि आपने इस कॉन्टेक्स्ट को अपने XrDevice इंस्टेंस में पास किया हो.
  • कॉन्टेक्स्ट के अमान्य होने की समस्या को हल करना: प्रोजेक्ट किए गए डिवाइस के कनेक्ट होने पर, हर बार एक नया deviceId जनरेट होता है. जब स्थिति DESTROYED पर पहुंच जाती है, तो मौजूदा ProjectedContext अमान्य हो जाता है. इसका इस्तेमाल तुरंत बंद करें और नए कनेक्शन का इंतज़ार करें.
  • बैटरी और संसाधनों को ऑप्टिमाइज़ करना: सिस्टम के संसाधनों को बचाए रखने और बैटरी की खपत कम करने के लिए, लाइफ़साइकल की स्थिति के आधार पर, ऐप्लिकेशन की सुविधाओं को बेहतर तरीके से हैंडल करें. उदाहरण के लिए, जब स्थिति STARTED से वापस CREATED पर जाती है, तो आपको चश्मे से जुड़े संसाधन रिलीज़ करने चाहिए. जैसे, कैमरे का डेटा स्ट्रीम. CREATED स्थिति से पता चलता है कि डिवाइस अब पहना नहीं गया है. इसलिए, बैटरी की खपत को कम करने और उपयोगकर्ता की निजता को बढ़ावा देने के लिए, इन प्रोसेस को रोकना ज़रूरी है.