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 de audio y
pantalla

Los diferentes tipos de anteojos de audio y anteojos con pantalla tienen diferentes capacidades. Por ejemplo, si bien todos los lentes de audio y los lentes 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 lentes y verifica las diferentes capacidades de los dispositivos. Este enfoque simplifica el desarrollo, ya que te permite crear una actividad que adapta su comportamiento, en lugar de varias actividades que se dirigen a dispositivos específicos.

Comprende el ciclo de vida de las actividades proyectadas

La actividad que compilas para los lentes de audio y los lentes 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 específicas que creas para este propósito son actividades proyectadas. El ciclo de vida de las actividades proyectadas se basa en el ciclo de vida estándar de las actividades, pero también incluye varias diferencias clave que admiten las capacidades de diferentes tipos de lentes de audio y lentes de pantalla.

Figura 1: Son los eventos clave en el ciclo de vida de las actividades proyectadas.

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

  • onCreate()
    • Se llama cuando se crea la actividad proyectada.
    • Aquí puedes inicializar la IU de Glimmer de Jetpack Compose de tu app y otros componentes.
  • onStart()
    • Se llama a este método cuando se inicia la actividad proyectada y el usuario es consciente de la app.
  • onResume()
    • Se llama cuando la actividad proyectada recupera el foco. Mientras la actividad está en primer plano, se puede interactuar con ella y puede consumir la entrada del panel táctil o de los botones.
    • Se llama cuando se vuelven a colocar los lentes (se ponen) después de que se los quitaron de la cabeza (se sacaron).
  • onPause()
    • Se llama a este método cuando la actividad proyectada pierde el enfoque, pero el usuario sigue consciente de tu app. Mientras la actividad está desenfocada, 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 desprenden).
  • 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 visualización afecta el ciclo de vida proyectado de la actividad

En un Activity estándar, el estado del ciclo de vida cambia cuando se apaga la pantalla del dispositivo, y suele pasar 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 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 activados por diferentes eventos del sistema y del usuario se comportan de la manera habitual.

Comprende cómo la conciencia del usuario afecta tu actividad proyectada

Un usuario puede conocer tu actividad proyectada incluso si no es visible. La percepción se refiere a todas las formas en que un usuario puede sentir y experimentar las experiencias de tu app, incluidas las siguientes:

  • Escuchar audio, comentarios audibles o cualquier otro indicador sonoro
  • Acciones de la app que activan un LED visible 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 los lentes de audio y los lentes de pantalla están activos y responden, incluso si no está mirando una pantalla:

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

Mientras el usuario conozca tu app, la actividad permanecerá activa y en primer plano. Si el sistema no detecta ningún indicador de conciencia durante un período breve, quita la actividad del primer plano y, finalmente, activa onStop().

Comprende las actividades y los contextos proyectados

Los lentes de audio y los lentes con pantalla se consideran dispositivos conectados que extienden las capacidades del teléfono del 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 anteojos conectado, como sus sensores, cámara o micrófono, en lugar del hardware del teléfono. A medida que desarrollas experiencias para lentes de audio y lentes de 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 las actividades proyectadas: Si el código de tu app se ejecuta desde dentro de tu actividad proyectada, su propio contexto de actividad ya es un contexto proyectado. En esta situación, las llamadas realizadas dentro de esa actividad ya pueden acceder al hardware de los lentes.

  • Para apps o servicios de teléfono: Si una parte de tu app fuera de la actividad proyectada (como una actividad de teléfono o un servicio) 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 anteojos de audio y anteojos con pantalla.

Información sobre las APIs que tienen en cuenta el dispositivo

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 host:

  • 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 los flujos de audio, el volumen y el enrutamiento en los lentes.
  • AudioRecord: Captura audio con el micrófono de los lentes.