कैमरे को चालू करने के बाद की जाने वाली कार्रवाइयों के लिए उपलब्ध ट्रेट

डिवाइस को चालू करने के बाद, इन ट्रेट का इस्तेमाल किया जा सकता है:

OtaSoftwareUpdateRequestor ट्रेट

इस ट्रेट की मदद से, कैमरा डिवाइस पर ओटीए सॉफ़्टवेयर अपडेट की निगरानी की जा सकती है. डिवाइस को चालू करने के बाद, कैमरा अपडेट की प्रोसेस शुरू करता है और ऐप्लिकेशन को इसकी स्थिति की जानकारी देता है. ऐप्लिकेशन को सॉफ़्टवेयर अपडेट पूरा होने की जानकारी मिलने के बाद, कैमरा लाइव स्ट्रीम करना शुरू कर सकता है.

यहां दिए गए सैंपल कोड और जानकारी से पता चलता है कि इस ट्रेट का इस्तेमाल कैसे किया जा सकता है.

withTimeout(OTA_TIMEOUT_MS) {
  device.type(OtaRequestorDevice)
    .mapNotNull { it?.trait(OtaSoftwareUpdateRequestor) }
    .distinctUntilChanged()
    .transformWhile { trait ->
      emit(trait)
      !isTerminalState(trait.updateState)
    }
    .collect { trait ->
      updateState = trait.updateState
      updateStateProgress = trait.updateStateProgress
    }
}
  • समयसीमा: withTimeout की मदद से, निगरानी की प्रोसेस के लिए ज़्यादा से ज़्यादा समयसीमा (OTA_TIMEOUT_MS) तय की जा सकती है. अगर अपडेट इस समयसीमा के अंदर पूरा नहीं होता है, तो समयसीमा खत्म हो जाती है.

  • ट्रेट में होने वाले बदलावों को ट्रैक करना: .distinctUntilChanged() ऑपरेटर यह पक्का करता है कि चेन में मौजूद इसके बाद का कोड, ट्रेट की स्थिति में बदलाव होने पर ही काम करे. इससे, लगातार पोलिंग करने के मुकाबले ज़्यादा बेहतर तरीके से काम किया जा सकता है.

  • अपडेट पूरा होने तक प्रोसेस करना: .transformWhile ऑपरेटर, अपडेट की प्रोसेस तब तक जारी रखता है, जब तक ओटीए updateState टर्मिनल स्थिति (जैसे, सफल या फ़ेल) में नहीं पहुंच जाता.

  • स्थिति की जानकारी इकट्ठा करना: स्थिति में हर बदलाव के लिए, .collect ब्लॉक को एक्ज़ीक्यूट किया जाता है इससे, ट्रेट से मिली नई वैल्यू के साथ updateState और updateStateProgress वैरिएबल अपडेट हो जाते हैं.

ज़्यादा जानकारी के लिए, OtaSoftwareUpdateRequestor ट्रेट का रेफ़रंस देखें.

ConfigurationDone ट्रेट

कैमरा चालू करने के लिए, इस ट्रेट की ज़रूरत नहीं होती. हालांकि, इसकी मदद से ऐप्लिकेशन यह ट्रैक कर सकता है कि डिवाइस पूरी तरह से सेट अप हो गया है और इस्तेमाल किया जा सकता है. इसके लिए, AppConfigurationComplete एट्रिब्यूट को true पर सेट करना होगा. इस ट्रेट का इस्तेमाल, OtaSoftwareUpdateRequestor ट्रेट के बाद किया जाना चाहिए.

device.trait(ConfigurationDone).first().update { setAppConfigurationComplete(true) }