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

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

OtaSoftwareUpdateRequestor trait

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

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

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 trait

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

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