डिवाइस को चालू करने के बाद, इन ट्रेट का इस्तेमाल किया जा सकता है:
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) }