Componentes del sistema y flujos de usuarios

En el siguiente diagrama, se ilustran los componentes que interactúan con el contenido multimedia:

Componentes del sistema

Figura 1: Componentes del sistema

Los elementos de esta figura se describen en la tabla:

Componente Descripción
Pantalla principal Representa otras superficies de la IU del vehículo que muestran y controlan el contenido que se está reproduciendo medios de comunicación. En el AOSP, es la pantalla principal que se muestra cuando se inicia el sistema. Desde esta pantalla, Los usuarios pueden ver los detalles del elemento multimedia que se está reproduciendo y ejecutar un conjunto limitado de y acciones personalizadas (por ejemplo, reproducir y pausar).
IU del sistema Proporciona funcionalidad que incluye opciones de navegación global de la IU, como navegar a Contenido multimedia.
Asistentes Android proporciona mecanismos para que diferentes apps de asistente de voz interactúen con el sistema. Estas apps pueden interactuar con fuentes de contenido multimedia en segundo plano (por ejemplo, al reproducir un canción como resultado de un comando por voz) o navegar a Contenido multimedia en primer plano (por ejemplo, cuando se indica a una aplicación de asistente de voz que muestre la IU de una fuente de contenido multimedia específica).
Selector de aplicaciones Todas las apps de Android se inician en el Selector de aplicaciones, incluidas las fuentes de contenido multimedia. Los medios pueden presentar su propio selector de fuente de medios, que complementa o reemplaza el Selector de aplicaciones como el como punto de partida para los medios.
Google Play Store Cuando se utiliza GAS, los usuarios ubican e instalan apps nuevas en una dispositivo Android. En el caso del contenido multimedia, una vez que se instalan las apps, se dirige a los usuarios al contenido multimedia para completar el proceso de acceso o comenzar a interactuar con la aplicación.
Administrador de sesiones multimedia Es un servicio del sistema Android que realiza un seguimiento de las sesiones multimedia de todas las fuentes y las controla. Integra proporciona mecanismos para detectar cuándo una fuente de medios se convierte en contenido multimedia en primer plano. fuente. Contenido multimedia y todas las demás apps que muestren la fuente de contenido multimedia que se está reproduciendo (para ejemplo, la pantalla principal), usa el Administrador de sesiones multimedia para detectar estos eventos y actualizar la IU. según corresponda. Las fuentes de medios interactúan con el administrador de sesiones multimedia a través del Medios API de Session.
Radio App especializada para interactuar con el hardware de la radio Búsquedas de radio de radio, que permite seleccionar rápidamente las estaciones identificadas recientemente y alternar entre bandas de radio. Los componentes de la interfaz de usuario compartidos por Radio y Medios permiten al usuario alternar entre ambos. experiencias.
Motor de distracciones del conductor Es el servicio del sistema Android que se usa para imponer restricciones de UX en función del estado de conducción de la auto Para la UX de acceso y configuración de las fuentes multimedia (donde la pantalla es controlada directamente por fuentes de medios), este servicio garantiza que no se muestre contenido no seguro cuando el vehículo está en el estado de conducción. Los OEM pueden personalizar la definición de estos estados reacciona en estas situaciones (por ejemplo, mostrando una superposición de pantalla bloqueada).

Flujos de usuarios

Lanzamiento de app multimedia

A continuación, se muestra el proceso que inicia el contenido multimedia.

Lanzamiento de app multimedia

Figura 2: Lanzamiento de app multimedia

El contenido multimedia debe iniciarse con el siguiente valor implícito. CAR_INTENT_ACTION_MEDIA_TEMPLATE Este intent puede tener la siguiente información como extras:

  • android.car.intent.extra.MEDIA_COMPONENT (opcional). Cadena adicional para representar el nombre del componente acoplado de un MediaBrowserService en la app de música a la que se conectará el contenido multimedia. Si no se proporciona, se muestra el contenido multimedia la app de música seleccionada actualmente. Este intent se usa en las siguientes plataformas Puntos de entrada:

    • IU del sistema Se usa para volver a la experiencia de contenido multimedia o para comenzar lo usan por primera vez. En este caso, el intent anterior se usaría sin ninguna extras para que el contenido multimedia muestre la app de contenido multimedia seleccionada actualmente.

    • Pantalla principal, asistentes y centro de notificaciones. Los usuarios pueden navega a Multimedia para mostrar la app de música seleccionada actualmente. En todos los casos, se activa el intent implícito sin extras.

    • Selector de aplicaciones Cuando los usuarios seleccionan una app de música de de aplicaciones, el intent anterior incluye el CAR_EXTRA_MEDIA_COMPONENT extra, que contiene la app de música seleccionada. El contenido multimedia lo designa como el la app seleccionada y se conecta a ella. Para obtener más información, consulta la sección a continuación, Aplicación Integración de selector a contenido multimedia.

Integración de Selector de aplicaciones a contenido multimedia

Las apps multimedia no pueden proporcionar ninguna actividad anotada con el android.intent.category.LAUNCHER. Como resultado, el Selector de aplicaciones (o su equivalente) deben implementar una lógica especial para abordar la integración de la fuente multimedia:

  • El Selector de aplicaciones debe analizar el sistema en busca de paquetes que implementen MediaBrowserService.SERVICE_INTERFACE Para estos paquetes, el Selector de aplicaciones recupera el ícono de servicio similar al que se usó para recuperar otros de datos.

  • Luego, el Selector de aplicaciones combina estos paquetes con los que implementan android.intent.category.LAUNCHER actividades. Si una app proporciona un elemento MediaBrowserService y una actividad iniciadora, el servicio toma prioridad.

    En el momento en que se escribe este documento, ninguna app de fuente multimedia puede proporcionar una actividad iniciadora.

  • Puedes encontrar un ejemplo de esta lógica en el código del AOSP en la página AppLauncherUtils#getAllLauncherApps()

Flujo de acceso y opciones de configuración

Las apps de música pueden incluir una actividad de configuración optimizada para vehículos. Esta actividad puede ser que se usan para implementar flujos de usuarios no abordados por las Android Media APIs, por ejemplo:

  • Acceso
  • Salir
  • Cambio de cuenta
  • Indica la pantalla en la que el usuario accedió actualmente (si corresponde).
  • Configuración del servicio

Flujo de inicio de sesión

Figura 3: Flujo de acceso

La app de música declara esta actividad de configuración con el siguiente filtro de intents:

<activity android:name=".AppSettingsActivity"
          android:exported="true
          android:theme="@style/SettingsActivity"
           android:label="@string/app_settings_activity_title">
   <intent-filter>
       <action android:name="android.intent.action.APPLICATION_PREFERENCES"/>
   </intent-filter>
</activity>

Los medios deben implementar la siguiente lógica:

  • Comprueba que la app de música seleccionada actualmente incluya una actividad con el Filtro de intents

  • Si es así, permite que el usuario navegue a la actividad.

  • Si hay Restricciones vigentes en la UX del vehículo (por ejemplo, si el vehículo está en movimiento), esta opción inhabilitarse, ya que la actividad de configuración no es una IU optimizada para conductores.

Manejo de errores y acceso obligatorio

El contenido multimedia interactúa con las apps multimedia a través de la API de Android Media Session. Como parte de este API, el contenido multimedia recibe un PlaybackState que comunica el estado actual de la app multimedia.

El proceso de acceso comienza cuando cambia la app de música PlaybackState a STATE_ERROR: incluido un código de error específico (consulta los detalles a continuación). Cuando esta el contenido multimedia muestra la descripción del error y una indicación para navegar a una actividad de acceso. que implementa la app multimedia.

Las apps pueden usar este mismo flujo para señalar otras situaciones de error (por ejemplo, un de conectividad del servidor).

Manejo de errores

Figura 4: Manejo de errores

Como parte del manejo de errores normal de PlaybackState, el contenido multimedia debe verificar la siguiente entrada.

  • PlaybackState código de error igual a PlaybackStateCompat#ERROR_CODE_AUTHENTICATION_EXPIRED Esto indica que la app de música requiere el acceso para continuar la operación. Otros códigos de error pueden ser recibidos, lo que indicaría otros tipos de situaciones de error.

  • PlaybackState mensaje de error (establecido por las apps de música mediante PlaybackStateCompat.Builder#setErrorMessage método) contiene un una explicación legible por humanos (por ejemplo, “No accediste”). Este mensaje se debe mostrar al usuario y se debe optimizar la distracción del conductor (DO).

  • De manera opcional, PlaybackState puede incluir los siguientes extras (establecidos por contenido multimedia) las apps con el PlaybackStateCompat.Builder#setExtras con las siguientes claves.

    • android.media.extras.ERROR_RESOLUTION_ACTION_LABEL Establece una cadena que contiene el mensaje legible por humanos que se mostrará en el botón que toque el usuario para iniciar el flujo de acceso.

    • android.media.extras.ERROR_RESOLUTION_ACTION_INTENT Configurada con un PendingIntent se activa cuando el usuario hace clic en el botón mencionado anteriormente. Esta PendingIntent apunta a una actividad de acceso personalizada implementada por la misma app de música.

  • El estado PlaybackState es igual a STATE_ERROR Esto indica que no es posible realizar otra operación hasta que se complete el acceso.