Implementa la radio con Media

La IU de la radio se implementa como una app independiente. Puedes encontrar instrucciones para integrar una IU de radio al hardware de radio en Cómo implementar la radio.

En la siguiente sección, se describe cómo integrar la IU de Radio con Media para brindar a los usuarios una experiencia fluida que les permita interactuar con las fuentes de contenido multimedia y la radio como si fueran una sola app.

Flujo de usuarios de cambio de fuente de contenido multimedia

En el siguiente diagrama, se ilustra cómo la implementación de referencia de Radio y Media implementa el flujo de usuarios de cambio de app.

Flujo de usuarios de cambio de fuente de contenido multimedia

Figura 1: Flujo de usuarios de cambio de fuente de contenido multimedia

Para proporcionar una transición fluida entre Radio y otras apps en Media, la biblioteca car-media-common define intents de Android que se pueden usar para iniciar un selector de fuentes de contenido multimedia. En AOSP, este selector se implementa en el selector de apps y presenta la misma IU para iniciar apps, pero se filtra para mostrar solo fuentes de contenido multimedia.

Los OEMs pueden optar por usar la implementación actual del selector de apps tal como está o implementar un selector de fuentes de contenido multimedia personalizado.

El selector puede actuar en dos modos:

  • Flujo normal. Después de usar el selector, la fuente seleccionada se muestra en Media para que el usuario pueda explorar su contenido.
  • Como interruptor Se usa un selector para cambiar de fuente, pero el contenido multimedia no se muestra al usuario. Esto es cierto para el ícono del selector en la página principal. Después de seleccionar una fuente, se le muestra al usuario la pantalla anterior más reciente (en este caso, la página principal).

El intent que se usa para cambiar entre fuentes de contenido multimedia se puede obtener del método MediaSource#getSourceSelectorIntent(), que acepta un valor booleano popup que muestra un intent para iniciar cada uno de los flujos descritos anteriormente.

Los intents reales se definen en packages/apps/Car/libs/car-media-common/res/values/config.xml. Para personalizar esta configuración, usa superposiciones de tiempo de compilación.

Reemplaza la app de Radio

Dado que la app de Radio implementa la exploración multimedia y la sesión multimedia, Radio se muestra en el selector de apps. Para evitar que se inicie Media cuando un usuario hace clic en el ícono, se requieren dos elementos. La radio debe cumplir con los siguientes requisitos:

  • Tener una actividad de selector
  • Se debe declarar como una fuente personalizada. Para ello, agrega el nombre del componente a la clave custom_media_packages en car-media-common/res/values/config.xml.

Restricciones de conducción de la UX

El contenido multimedia debe cumplir con todas las restricciones de distracción del conductor de la UX. Para ello, Media debe escuchar a CarUXRestrictionManager e implementar todas sus políticas.

  • El contenido multimedia debe conectarse a la biblioteca de Car y obtener una instancia de CarUXRestrictionManager.
  • El contenido multimedia debe suscribirse a las actualizaciones de la lista de CarUxRestrictions y, luego, implementarlas según se documenta.
  • Los siguientes son especialmente importantes para el contenido multimedia: