Kamera ekleme için devreye alma sonrası özellikler

Cihaz devreye alındıktan sonra kullanılabilecek özellikler şunlardır:

OtaSoftwareUpdateRequestor özelliği

   Android için örnek uygulamada uygulandı   

Bu özellik, kamera cihazında OTA yazılım güncellemesini izlemek için bir arayüz sağlar. Kamera devreye alındıktan sonra güncellemeyi başlatır ve durumunu uygulamaya bildirir. Uygulama, yazılım güncellemesinin tamamlandığına dair durumu aldığında kamera canlı yayın yapmaya başlayabilir.

Aşağıdaki örnek kod ve açıklama, özelliğin nasıl kullanılabileceğini gösterir.

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
    }
}
  • Zaman aşımı: withTimeout, izleme işlemi için maksimum süre (OTA_TIMEOUT_MS) uygular. Güncelleme bu süre içinde tamamlanmazsa zaman aşımına uğrar.

  • Özellik değişikliklerini gözlemleme: .distinctUntilChanged() operatörü, zincirdeki sonraki kodun yalnızca özelliğin durumu gerçekten değiştiğinde tepki vermesini sağlar. Bu da sürekli yoklamadan daha verimlidir.

  • Tamamlanana kadar işleme: .transformWhile operatörü, OTA updateState son durum (ör. başarılı veya başarısız) olmadığı sürece güncellemeleri işlemeye devam eder.

  • Toplama durumu: Her durum değişikliğinde, updateState ve updateStateProgress değişkenlerini özelliğin en son değerleriyle güncellemek için .collect bloğu yürütülür.

Daha fazla bilgi için OtaSoftwareUpdateRequestor özelliği referansına bakın.

ConfigurationDone özelliği

Bu özellik, kamera etkinleştirme için gerekli değildir ancak AppConfigurationComplete özelliğini true olarak ayarlayarak uygulamanın cihazın tam olarak kurulduğu ve kullanılabilir olduğu zamanı izlemesine olanak tanır. Bu özellik, OtaSoftwareUpdateRequestor özelliğinden sonra kullanılmalıdır.

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