Rasgos posteriores a la puesta en marcha para la incorporación de la cámara

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: withTimeout aplica 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 .transformWhile continúa procesando actualizaciones mientras el OTA updateState no se encuentre en un estado terminal (como éxito o falla).

  • Recopilación de estado: Para cada cambio de estado, se ejecuta el bloque .collect para actualizar las variables updateState y updateStateProgress con 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) }