Ciri-ciri pasca-penyiapan untuk orientasi kamera

Trait yang dapat digunakan setelah perangkat diaktifkan adalah:

Trait OtaSoftwareUpdateRequestor

Trait ini menyediakan antarmuka untuk memantau update software OTA di perangkat kamera. Setelah diaktifkan, kamera akan memulai update dan melaporkan statusnya ke aplikasi. Setelah aplikasi menerima status bahwa update software telah selesai, kamera dapat mulai melakukan livestream.

Contoh kode dan penjelasan berikut menunjukkan cara penggunaan 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
    }
}
  • Waktu tunggu: withTimeout menerapkan durasi maksimum (OTA_TIMEOUT_MS) untuk proses pemantauan. Jika update tidak selesai dalam jangka waktu ini, update akan habis waktunya.

  • Mengamati perubahan sifat: Operator .distinctUntilChanged() memastikan bahwa kode berikutnya dalam rantai hanya bereaksi saat status sifat benar-benar berubah, sehingga lebih efisien daripada polling konstan.

  • Pemrosesan hingga selesai: Operator .transformWhile terus memproses update selama updateState OTA bukan merupakan status akhir (seperti berhasil atau gagal).

  • Mengumpulkan status: Untuk setiap perubahan status, blok .collect dieksekusi untuk memperbarui variabel updateState dan updateStateProgress dengan nilai terbaru dari trait.

Untuk mengetahui informasi selengkapnya, lihat referensi karakteristik OtaSoftwareUpdateRequestor.

Trait ConfigurationDone

Ciri ini tidak diperlukan untuk aktivasi kamera, tetapi memungkinkan aplikasi melacak saat perangkat disiapkan sepenuhnya dan dapat digunakan dengan menyetel atribut AppConfigurationComplete ke true. Ciri ini harus digunakan setelah ciri OtaSoftwareUpdateRequestor.

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