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

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

OtaSoftwareUpdateRequestor trait

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

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

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 ऑपरेटर, अपडेट को तब तक प्रोसेस करता रहता है, जब तक कि OTA updateState की स्थिति, फ़ाइनल स्थिति (जैसे कि प्रोसेस पूरी हुई या प्रोसेस पूरी नहीं हुई) में नहीं पहुंच जाती.

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

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

ConfigurationDone trait

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

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