Controllare la disponibilità del dispositivo in fase di runtime per gli occhiali AI

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

INITIALIZED

Creato

L'oggetto del ciclo di vita viene creato, ma non ancora osservato.

CREATED

Sistema non attivo

Il servizio è connesso, ma l'utente non indossa il dispositivo.

STARTED

Sistema attivo

L'utente indossa il dispositivo.

DESTROYED

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.isProjectedDeviceConnected per verificare che il dispositivo proiettato sia connesso al dispositivo host.
  • Ottieni un ProjectedContext: chiama ProjectedContext.createProjectedDeviceContext solo dopo aver verificato la connessione e assicurati di passare questo contesto all'istanza di XrDevice.
  • Gestisci l'invalidazione del contesto: viene generato un nuovo deviceId ogni volta che si connette un dispositivo proiettato. Una volta raggiunto lo stato DESTROYED, l'attuale ProjectedContext non è 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.