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