Los rasgos que se pueden usar después de que se pone en funcionamiento el dispositivo son los siguientes:
Rasgo OtaSoftwareUpdateRequestor
Este rasgo proporciona una interfaz para supervisar una actualización de software OTA en el dispositivo de la cámara. Una vez que se pone en funcionamiento, la cámara inicia la actualización y le informa su estado a la app. Cuando la app recibe el estado que indica que la actualización de software se completó, la cámara puede comenzar a transmitir en vivo.
En el siguiente código de muestra y explicación, se muestra cómo se puede usar el rasgo.
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
}
}
Tiempo de espera:
withTimeoutaplica una duración máxima (OTA_TIMEOUT_MS) para el proceso de supervisión. Si la actualización no se completa en este tiempo, se agotará el tiempo de espera.Observación de cambios en el rasgo: El operador
.distinctUntilChanged()garantiza que el código posterior de la cadena solo reaccione cuando el estado del rasgo cambie realmente, lo que lo hace más eficiente que el sondeo constante.Procesamiento hasta la finalización: El operador
.transformWhilecontinúa procesando actualizaciones mientras el OTAupdateStateno se encuentre en un estado terminal (como éxito o falla).Recopilación de estado: Para cada cambio de estado, se ejecuta el bloque
.collectpara actualizar las variablesupdateStateyupdateStateProgresscon los valores más recientes del rasgo.
Para obtener más información, consulta la referencia del rasgo OtaSoftwareUpdateRequestor.
Rasgo ConfigurationDone
Este rasgo no es obligatorio para la activación de la cámara, pero permite que la app haga un seguimiento de cuándo el dispositivo está completamente configurado y listo para usarse estableciendo el atributo AppConfigurationComplete en true.
Este rasgo debe usarse después del rasgo OtaSoftwareUpdateRequestor.
device.trait(ConfigurationDone).first().update { setAppConfigurationComplete(true) }