Durante la giornata, gli occhiali AI di un utente potrebbero perdere la connessione
al dispositivo host (ad esempio lo smartphone dell'utente) o potrebbero non essere
temporaneamente disponibili se l'utente li toglie. Per tenere conto di questi
tipi di modifiche alla disponibilità dei dispositivi, la tua app può utilizzare l'API XR Device
Availability, che consolida i segnali di disponibilità dei dispositivi nei
valori Lifecycle.State standard di Android. Utilizza questa API per gestire il routing audio, l'attivazione della hotword e per sapere quando prevedere l'input dell'utente in base alla disponibilità degli occhiali AI.
Informazioni sugli stati del ciclo di vita
La seguente tabella mostra come i segnali di disponibilità dei dispositivi vengono mappati ai valori Lifecycle.State.
Stato del ciclo di vita |
Stato del dispositivo |
Descrizione |
|---|---|---|
|
Creato |
L'oggetto del ciclo di vita viene creato, ma non ancora osservato. |
|
Non attivo |
Il servizio è connesso, ma l'utente non indossa il dispositivo. |
|
Attivo |
L'utente indossa il dispositivo. |
|
Disconnesso |
Il dispositivo è disconnesso o la connessione al servizio è persa. |
Controllare e monitorare la disponibilità dei dispositivi
Per controllare e monitorare la disponibilità di un dispositivo, utilizzerai un contesto proiettato insieme allo stato del ciclo di vita per determinare come la tua app deve gestire ogni caso:
val xrDevice = XrDevice.getCurrentDevice(projectedContext) xrDevice.getLifecycle().currentStateFlow .takeWhile { it != Lifecycle.State.DESTROYED } .collect { state -> when (state) { Lifecycle.State.STARTED -> { /* Device is ACTIVE (worn) */ } Lifecycle.State.CREATED -> { /* Device is INACTIVE (not worn) */ } else -> { /* Handle other states */ } } } }
Punti chiave sul codice
- Verificare la presenza di una connessione: prima di accedere al ciclo di vita del dispositivo, chiama
ProjectedContext.isProjectedDeviceConnectedper verificare che il dispositivo proiettato sia connesso al dispositivo host. - Ottenere un
ProjectedContext: chiamaProjectedContext.createProjectedDeviceContextsolo dopo aver verificato la connessione e assicurati di passare questo contesto all'istanzaXrDevice. - Gestire l'invalidazione del contesto: ogni volta che un
dispositivo proiettato si connette, viene generato un nuovo
deviceId. Una volta che lo stato raggiungeDESTROYED, ilProjectedContextcorrente non è valido. Smetti di utilizzarlo immediatamente e attendi una nuova connessione. - Ottimizzare la batteria e le risorse: gestisci correttamente le funzionalità dell'app
in base allo stato del ciclo di vita per preservare le risorse di sistema e ridurre il consumo della
batteria. Ad esempio, devi rilasciare le risorse specifiche per gli occhiali, come uno stream di dati della fotocamera, quando lo stato passa da
STARTEDaCREATED. Lo statoCREATEDindica che il dispositivo non viene più indossato, quindi l'interruzione di questi processi è essenziale per evitare un consumo eccessivo della batteria e promuovere la privacy dell'utente.