Implementa la radio con contenido multimedia

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 el contenido multimedia para brindar a los usuarios una experiencia fluida que les permite interactuar con fuentes 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 contenido multimedia implementa el flujo de cambio de usuario de la app.

Flujo de cambio de fuente multimedia de usuarios

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 tomar la implementación actual del Selector de aplicaciones tal como está o implementar un selector de fuentes multimedia personalizado.

El selector puede actuar en dos modos:

  • Flujo normal. Después de usar el selector, la fuente seleccionada se muestra en el contenido multimedia 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 de contenido 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

Los medios de comunicación deben cumplir con todas las restricciones relacionadas con la distracción de la conducción de UX. Para ello, Media debe escuchar el 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, implementarla como se documenta.
  • Los siguientes son particularmente importantes para el contenido multimedia: