ลักษณะที่ใช้ได้หลังจากมอบหมายงานให้อุปกรณ์แล้ว ได้แก่
ลักษณะ OtaSoftwareUpdateRequestor
ลักษณะนี้มีอินเทอร์เฟซสำหรับตรวจสอบการอัปเดตซอฟต์แวร์ 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ของ OTA ไม่ใช่สถานะสิ้นสุด (เช่น สำเร็จหรือล้มเหลว)การรวบรวมสถานะ: สำหรับการเปลี่ยนแปลงสถานะแต่ละครั้ง ระบบจะเรียกใช้บล็อก
.collectเพื่ออัปเดตตัวแปรupdateStateและupdateStateProgressด้วยค่าล่าสุดจากลักษณะ
ดูข้อมูลเพิ่มเติมได้ที่ข้อมูลอ้างอิงลักษณะ
OtaSoftwareUpdateRequestor
ลักษณะ ConfigurationDone
ลักษณะนี้ไม่จำเป็นสำหรับการเปิดใช้งานกล้อง แต่ช่วยให้แอปติดตามได้ว่าอุปกรณ์ตั้งค่าเสร็จสมบูรณ์และพร้อมใช้งานเมื่อใด โดยการตั้งค่าแอตทริบิวต์ AppConfigurationComplete เป็น true
ควรใช้ลักษณะนี้หลังจากลักษณะ OtaSoftwareUpdateRequestor
device.trait(ConfigurationDone).first().update { setAppConfigurationComplete(true) }