Le caratteristiche che possono essere utilizzate dopo la configurazione del dispositivo sono:
OtaSoftwareUpdateRequestor trait
Questo tratto fornisce un'interfaccia per monitorare un aggiornamento software OTA sul dispositivo videocamera. Una volta commissionata, la videocamera avvia l'aggiornamento e comunica il suo stato all'app. Quando l'app riceve la notifica che l'aggiornamento software è stato completato, la videocamera può iniziare a trasmettere in live streaming.
Il seguente codice di esempio e la relativa spiegazione mostrano come può essere utilizzata la caratteristica.
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:
withTimeoutimpone una durata massima (OTA_TIMEOUT_MS) per la procedura di monitoraggio. Se l'aggiornamento non viene completato entro questo periodo di tempo, scade.Osservazione delle modifiche delle caratteristiche: l'operatore
.distinctUntilChanged()garantisce che il codice successivo nella catena reagisca solo quando lo stato della caratteristica cambia effettivamente, il che lo rende più efficiente del polling costante.Elaborazione fino al completamento: l'operatore
.transformWhilecontinua a elaborare gli aggiornamenti finché l'OTAupdateStatenon è in uno stato terminale (ad esempio riuscito o non riuscito).Stato di raccolta: per ogni modifica dello stato, viene eseguito il blocco
.collectper aggiornare le variabiliupdateStateeupdateStateProgresscon i valori più recenti del tratto.
Per saperne di più, consulta il
riferimento all'attributo OtaSoftwareUpdateRequestor.
Tratto ConfigurationDone
Questa caratteristica non è necessaria per l'attivazione della videocamera, ma consente all'app
di monitorare quando il dispositivo è completamente configurato e utilizzabile impostando l'attributo
AppConfigurationComplete su true.
Questo tratto deve essere utilizzato dopo il tratto OtaSoftwareUpdateRequestor.
device.trait(ConfigurationDone).first().update { setAppConfigurationComplete(true) }