Durante la giornata, gli occhiali AI potrebbero perdere la connessione
al dispositivo host (ad esempio lo smartphone dell'utente) o potrebbero
non essere disponibili temporaneamente se vengono tolti. Per tenere conto di questi
tipi di modifiche nella disponibilità del dispositivo, la tua app può utilizzare l'API XR Device
Availability, che consolida gli indicatori di disponibilità del dispositivo nei valori
standard di Lifecycle.State 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 tabella seguente elenca la mappatura degli indicatori di disponibilità dei dispositivi ai valori di Lifecycle.State.
Stato del ciclo di vita |
Stato dispositivo |
Descrizione |
|---|---|---|
|
Creato |
L'oggetto del ciclo di vita viene creato, ma non ancora osservato. |
|
Sistema non attivo |
Il servizio è connesso, ma l'utente non indossa il dispositivo. |
|
Sistema attivo |
L'utente indossa il dispositivo. |
|
Scollegamento eseguito |
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
- Verifica la connessione: prima di accedere al ciclo di vita del dispositivo, chiama
ProjectedContext.isProjectedDeviceConnectedper verificare che il dispositivo proiettato sia connesso al dispositivo host. - Ottieni un
ProjectedContext: chiamaProjectedContext.createProjectedDeviceContextsolo dopo aver verificato la connessione e assicurati di passare questo contesto all'istanza diXrDevice. - Gestisci l'invalidazione del contesto: viene generato un nuovo
deviceIdogni volta che si connette un dispositivo proiettato. Una volta raggiunto lo statoDESTROYED, l'attualeProjectedContextnon è valido. Smetti di utilizzarlo immediatamente e attendi una nuova connessione. - Ottimizza la batteria e le risorse: gestisci correttamente la 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 interrompere la proiezione dei contenuti della UI sugli occhiali AI quando lo stato cambia in
CREATED.