Cechy po uruchomieniu kamery

Cechy, których można używać po uruchomieniu urządzenia:

OtaSoftwareUpdateRequestor

Ten atrybut udostępnia interfejs do monitorowania aktualizacji oprogramowania OTA na urządzeniu z kamerą. Po uruchomieniu kamera rozpoczyna aktualizację i przesyła informacje o jej stanie do aplikacji. Gdy aplikacja otrzyma informację o zakończeniu aktualizacji oprogramowania, kamera może rozpocząć transmisję na żywo.

Poniższy przykładowy kod i wyjaśnienie pokazują, jak można używać tego atrybutu.

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
    }
}
  • Czas oczekiwania: withTimeout wymusza maksymalny czas trwania (OTA_TIMEOUT_MS) procesu monitorowania. Jeśli aktualizacja nie zakończy się w tym czasie, nastąpi przekroczenie limitu czasu.

  • Obserwowanie zmian cech: operator .distinctUntilChanged() zapewnia, że kolejny kod w łańcuchu reaguje tylko wtedy, gdy stan cechy faktycznie się zmieni, co jest bardziej wydajne niż ciągłe odpytywanie.

  • Przetwarzanie do ukończenia: operator .transformWhile kontynuuje przetwarzanie aktualizacji, dopóki OTA updateState nie osiągnie stanu końcowego (np. powodzenie lub niepowodzenie).

  • Stan zbierania: przy każdej zmianie stanu wykonywany jest blok .collect, aby zaktualizować zmienne updateStateupdateStateProgress najnowszymi wartościami cechy.

Więcej informacji znajdziesz w dokumentacji cechy OtaSoftwareUpdateRequestor.

Cecha ConfigurationDone

Ten atrybut nie jest wymagany do aktywacji kamery, ale umożliwia aplikacji śledzenie, kiedy urządzenie jest w pełni skonfigurowane i gotowe do użycia, poprzez ustawienie atrybutu AppConfigurationComplete na true. Ten atrybut powinien być używany po atrybucie OtaSoftwareUpdateRequestor.

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