К характеристикам, которые можно использовать после ввода устройства в эксплуатацию, относятся:
Черта 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
}
}
Функция `timeout`
withTimeoutустанавливает максимальную продолжительность (OTA_TIMEOUT_MS) для процесса мониторинга. Если обновление не завершится в течение этого времени, произойдет таймаут.Отслеживание изменений состояния трейта: оператор
.distinctUntilChanged()гарантирует, что последующий код в цепочке реагирует только тогда, когда состояние трейта действительно изменяется, что делает этот подход более эффективным, чем постоянный опрос.Обработка до завершения: Оператор
.transformWhileпродолжает обработку обновлений до тех пор, покаupdateStateOTA не переходит в конечное состояние (например, успех или неудача).Статус сбора данных: При каждом изменении состояния выполняется блок
.collect, который обновляет переменныеupdateStateиupdateStateProgressпоследними значениями из трейта.
Для получения более подробной информации обратитесь к справочнику по трейту OtaSoftwareUpdateRequestor .
Характеристика ConfigurationDone
Этот трейт не является обязательным для активации камеры, но позволяет приложению отслеживать, когда устройство полностью настроено и готово к использованию, устанавливая атрибут AppConfigurationComplete в true . Этот трейт следует использовать после трейта OtaSoftwareUpdateRequestor .
device.trait(ConfigurationDone).first().update { setAppConfigurationComplete(true) }