Plan para admitir diferentes tipos de lentes de audio y lentes de visualización

Dispositivos de realidad extendida correspondientes
Esta guía te ayuda a crear experiencias para estos tipos de dispositivos de realidad extendida.
Lentes con audio y
pantalla

Los diferentes tipos de lentes con audio y lentes con pantalla tienen diferentes capacidades. Por ejemplo, si bien todos los lentes con audio y con pantalla ofrecen experiencias de audio a través de la voz, solo los lentes con pantalla tienen una pantalla en la que tu app puede mostrar IU creadas con Jetpack Compose Glimmer.

Para crear una experiencia del usuario fluida en una variedad de dispositivos, planifica tu Activity para que los lentes verifiquen las diferentes capacidades de los dispositivos. Este enfoque simplifica el desarrollo, ya que te permite compilar una actividad que adapta su comportamiento, en lugar de varias actividades orientadas a dispositivos específicos.

Comprender el ciclo de vida de las actividades proyectadas

La actividad que creas para los lentes con audio y con pantalla no se ejecuta directamente en el dispositivo, sino que se proyecta en él desde un dispositivo host (como el teléfono del usuario). Las actividades dedicadas que creas para este propósito son actividades proyectadas. El ciclo de vida de las actividades proyectadas se basa en el ciclo de vida de la actividad estándar, pero también incluye varias diferencias clave que admiten las capacidades de diferentes tipos de lentes con audio y lentes con pantalla.

Figura 1: Los eventos clave en el ciclo de vida de las actividades proyectadas

A continuación, se incluye un desglose de los eventos clave, con leyendas para las interacciones que son específicas de las actividades que se proyectan en los lentes con audio y con pantalla:

  • onCreate()
    • Se llama cuando se crea la actividad proyectada.
    • Inicializa la IU de Glance de Jetpack Compose de tu app y otros componentes aquí.
  • onStart()
    • Se llama cuando se inicia la actividad proyectada y el usuario conoce la app.
  • onResume()
    • Se llama cuando la actividad proyectada recupera el foco. Mientras la actividad está enfocada, es interactiva y puede consumir entradas del panel táctil o de botones.
    • Se llama cuando se vuelven a colocar los lentes (colocados) después de que se quitaron de la cabeza (quitados).
  • onPause()
    • Se llama cuando la actividad proyectada pierde el foco, pero el usuario aún está al tanto de tu app. Mientras la actividad está fuera de foco, no se puede interactuar con ella y deja de consumir entradas.
  • onStop()
    • Se llama cuando el sistema cree que el usuario ya no está al tanto de tu app.
    • Se llama cuando se quitan los lentes de la cabeza (se quitan).
  • onDestroy()
    • Se llama cuando la actividad proyectada está a punto de destruirse. Cuando se llama a este método, el sistema libera todos los recursos vinculados a la actividad.

Comprende cómo el estado de la pantalla afecta el ciclo de vida de la actividad proyectada

En un Activity estándar, el estado del ciclo de vida cambia cuando se apaga la pantalla del dispositivo, por lo general, a onPause() o onStop(). En cambio, el ciclo de vida de la actividad proyectada no cambia cuando la pantalla de los lentes se enciende o se apaga. Este comportamiento significa que la actividad proyectada sigue ejecutándose en el estado Iniciado o Reanudado, incluso cuando la pantalla está apagada, lo que permite que las experiencias de audio de tu app continúen sin interrupciones.

Otros cambios de estado de la actividad que activan diferentes eventos del sistema y del usuario se comportan de la manera habitual.

Comprende cómo el reconocimiento de los usuarios afecta tu actividad proyectada

Un usuario puede estar al tanto de tu actividad proyectada, incluso si no es visible. La percepción se refiere a todas las formas en que un usuario puede percibir las experiencias de tu app y, también, interactuar con ellas, incluidas las siguientes:

  • Escuchar audio, comentarios audibles o cualquier otro indicador sonoro
  • Acciones de la app que activan un LED para el usuario, como un indicador de privacidad si tu app accede a la cámara o al micrófono

En estas situaciones, el usuario sabe que sus lentes con audio o con pantalla están activos y responden, incluso si no está mirando una pantalla:

  • El estado onStart() de las actividades proyectadas significa que la actividad está activa.
  • El estado onResume() significa que la actividad es interactiva y puede recibir entradas del panel táctil o que está recibiendo un envío de entrada principal.

Mientras el usuario esté al tanto de tu app, la actividad permanecerá activa y en primer plano. Si el sistema no detecta ningún indicador de atención durante un período breve, quita la actividad del primer plano y, con el tiempo, activa onStop().

Comprende las actividades y los contextos proyectados

Los lentes con audio y con pantalla se tratan como un dispositivo conectado que amplía las capacidades del teléfono de un usuario. Un contexto proyectado es un Context que reconoce el dispositivo y permite que las apps interactúen con el hardware de un dispositivo de lentes conectado, como sus sensores o su cámara, en lugar del hardware del teléfono. A medida que desarrollas experiencias para lentes con audio y lentes con pantalla, tu app debe usar un contexto proyectado para acceder al hardware de los lentes.

Se puede otorgar automáticamente un contexto proyectado a tu app según el contexto de la actividad de llamada:

  • Para actividades proyectadas: Si el código de tu app se ejecuta desde tu actividad proyectada, su propio contexto de actividad ya es un contexto proyectado. En esta situación, las llamadas que se realicen dentro de esa actividad ya pueden acceder al hardware de los lentes.

  • Para apps o servicios de teléfonos: Si una parte de tu app fuera de tu actividad proyectada (como una actividad o un servicio de teléfono) necesita acceder al hardware de los lentes, debe obtener explícitamente un contexto proyectado. Para ello, usa el método createProjectedDeviceContext().

Para obtener más información, consulta Usa un contexto proyectado para acceder al hardware en lentes con audio y lentes con pantalla.

Información sobre las APIs que reconocen dispositivos

Algunas APIs de Android estándares cambian el hardware del dispositivo al que acceden según el Context de la actividad que realiza la llamada. Cuando estas APIs reciben un contexto proyectado, acceden al hardware de los lentes en lugar del hardware del teléfono anfitrión:

  • CameraManager: Accede a la cámara de los lentes.
  • SensorManager: Recupera datos de sensores (por ejemplo, datos del giroscopio o del acelerómetro) de los lentes.
  • AudioManager: Administra las transmisiones de audio, el volumen y el enrutamiento en los lentes.