Pianificare il supporto di diversi tipi di occhiali audio e occhiali con display

Dispositivi XR applicabili
Queste indicazioni ti aiutano a creare esperienze per questi tipi di dispositivi XR.
Audio e
occhiali con display

Diversi tipi di occhiali audio e occhiali con display hanno funzionalità diverse. Ad esempio, mentre tutti gli occhiali audio e gli occhiali con display offrono esperienze audio tramite la voce, solo gli occhiali con display hanno un display in cui la tua app può mostrare UI create con Jetpack Compose Glimmer.

Per creare un'esperienza utente fluida su una vasta gamma di dispositivi, pianifica i tuoi Activity per gli occhiali in modo da verificare le diverse funzionalità dei dispositivi. Questo approccio semplifica lo sviluppo consentendoti di creare un'attività che adatta il proprio comportamento, anziché più attività che hanno come target dispositivi specifici.

Comprendere il ciclo di vita delle attività proiettate

L'attività che crei per gli occhiali audio e gli occhiali con display non viene eseguita direttamente sul dispositivo, ma viene proiettata sul dispositivo da un dispositivo host (ad esempio lo smartphone dell'utente). Le attività dedicate che crei per questo scopo sono attività proiettate. Il ciclo di vita delle attività proiettate si basa sul ciclo di vita standard delle attività, ma include anche diverse differenze chiave che supportano le funzionalità di diversi tipi di occhiali audio e occhiali con display.

Figura 1. Gli eventi chiave nel ciclo di vita delle attività proiettate.

Ecco una suddivisione degli eventi chiave, con callout per le interazioni specifiche per le attività proiettate su occhiali audio e occhiali con display:

  • onCreate()
    • Viene chiamato quando viene creata l'attività proiettata.
    • Inizializza qui la UI Jetpack Compose Glimmer e altri componenti della tua app.
  • onStart()
    • Chiamato quando l'attività prevista sta per iniziare e l'utente è consapevole dell'app.
  • onResume()
    • Chiamato quando l'attività proiettata riacquista lo stato attivo. Mentre l'attività è in primo piano, è interattiva e può utilizzare l'input del touchpad o dei pulsanti.
    • Chiamato quando gli occhiali vengono indossati di nuovo (indossati), dopo essere stati precedentemente tolti dalla testa (rimossi).
  • onPause()
    • Chiamato quando l'attività proiettata perde lo stato attivo, ma l'utente è ancora consapevole della tua app. Mentre l'attività non è attiva, non è interattiva e smette di consumare input.
  • onStop()
    • Chiamato quando il sistema ritiene che l'utente non sia più consapevole della tua app.
    • Chiamato quando gli occhiali vengono rimossi dalla testa.
  • onDestroy()
    • Chiamato quando l'attività proiettata sta per essere eliminata. Quando viene chiamato questo metodo, il sistema rilascia tutte le risorse associate all'attività.

Comprendere in che modo lo stato di visualizzazione influisce sul ciclo di vita dell'attività proiettata

In un Activity standard, lo stato del ciclo di vita cambia quando lo schermo del dispositivo si spegne, in genere passando a onPause() o onStop(). Al contrario, il ciclo di vita dell'attività proiettata non cambia quando il display degli occhiali si accende o si spegne. Questo comportamento significa che l'attività proiettata continua a essere eseguita nello stato Avviata o Ripresa anche quando il display è spento, il che consente alle esperienze audio della tua app di continuare senza interruzioni.

Altri cambiamenti di stato dell'attività attivati da diversi eventi di sistema e utente si comportano nel solito modo.

Comprendere in che modo la consapevolezza degli utenti influisce sull'attività prevista

Un utente può essere a conoscenza della tua attività prevista anche se non è visibile. Consapevolezza si riferisce a tutti i modi in cui un utente può percepire e interagire con le esperienze della tua app, tra cui:

  • Ascoltare audio, feedback sonori o altri segnali acustici.
  • Azioni dell'app che attivano un LED rivolto all'utente, ad esempio un indicatore della privacy se l'app accede alla fotocamera o al microfono.

In queste situazioni, l'utente è consapevole che gli occhiali audio e gli occhiali con display sono attivi e rispondono, anche se non sta guardando un display:

  • Lo stato onStart() per le attività proiettate indica che l'attività è attiva.
  • Lo stato onResume() indica che l'attività è interattiva e può ricevere input dal touchpad o sta ricevendo l'invio dell'input principale.

Finché l'utente è a conoscenza della tua app, la tua attività rimane attiva e in primo piano. Se il sistema non rileva segnali di consapevolezza per un breve periodo di tempo, l'attività viene rimossa dal primo piano e alla fine viene attivato onStop().

Comprendere le attività e i contesti proiettati

Gli occhiali audio e gli occhiali con display sono considerati un dispositivo connesso che estende le funzionalità dello smartphone di un utente. Un contesto proiettato è un Context che riconosce il dispositivo e consente alle app di interagire con l'hardware di un dispositivo di occhiali connesso, ad esempio sensori, fotocamera o microfono, anziché con l'hardware dello smartphone. Quando sviluppi esperienze per occhiali audio e occhiali con display, la tua app deve utilizzare un contesto proiettato per accedere all'hardware degli occhiali.

Un contesto proiettato può essere concesso automaticamente alla tua app a seconda del contesto dell'attività di chiamata:

  • Per le attività proiettate: se il codice della tua app viene eseguito dall'interno dell'attività proiettata, il suo contesto di attività è già un contesto proiettato. In questo scenario, le chiamate effettuate all'interno di questa attività possono già accedere all'hardware degli occhiali.

  • Per app o servizi di telefonia: se una parte della tua app al di fuori dell'attività proiettata (ad esempio un'attività telefonica o un servizio) deve accedere all'hardware degli occhiali, deve ottenere esplicitamente un contesto proiettato. Per farlo, utilizza il metodo createProjectedDeviceContext().

Per saperne di più, vedi Utilizzare un contesto proiettato per accedere all'hardware su occhiali audio e occhiali con display.

Informazioni sulle API sensibili al dispositivo

Alcune API Android standard cambiano l'hardware del dispositivo a cui accedono a seconda dell'Context dell'attività chiamante. Quando queste API ricevono un contesto proiettato, accedono all'hardware degli occhiali anziché a quello dello smartphone host:

  • CameraManager: accede alla fotocamera degli occhiali.
  • SensorManager: recupera i dati dei sensori (ad esempio, giroscopio o accelerometro) dagli occhiali.
  • AudioManager: gestisce i flussi audio, il volume e il routing sugli occhiali.
  • AudioRecord: acquisisce l'audio utilizzando il microfono degli occhiali.