Descripción general

El SO Android Automotive (AAOS) se basa en la pila de audio principal de Android para admitir los casos de uso de funcionamiento como sistema de infoentretenimiento en un vehículo. AAOS es responsable de los sonidos de infoentretenimiento (es decir, medios, navegación y comunicaciones), pero no es directamente responsable de las campanillas y las advertencias que tienen requisitos estrictos de disponibilidad y sincronización.

Si bien AAOS proporciona indicadores y mecanismos para ayudar al vehículo a administrar el audio, en última instancia, es el vehículo el que debe decidir qué sonidos se deben reproducir para el conductor y los pasajeros, lo que garantiza que los sonidos críticos para la seguridad y los sonidos reglamentarios se escuchen correctamente sin interrupciones.

Dado que AAOS aprovecha la pila de audio de Android, las aplicaciones de terceros que reproducen audio no necesitan hacer nada diferente a lo que harían en los teléfonos. AAOS administra automáticamente el enrutamiento de audio de la app, como se describe en Configuración de la política de audio.

Como Android administra la experiencia multimedia del vehículo, las fuentes multimedia externas, como el sintonizador de radio, deben representarse con apps que puedan controlar el enfoque de audio y los eventos de teclas de medios para la fuente.

Sonidos y transmisiones de Android

Los sistemas de audio para automóviles controlan los siguientes sonidos y transmisiones:

imagen

Figura 1: Diagrama de arquitectura centrado en la transmisión

Android administra los sonidos provenientes de las apps para Android, controla esas apps y enruta sus sonidos a los dispositivos de salida en la HAL según el tipo de sonido:

  • Los flujos lógicos, conocidos como fuentes en la nomenclatura de audio principal, se etiquetan con atributos de audio.

  • Los flujos físicos, conocidos como dispositivos en la nomenclatura de audio principal, no tienen información de contexto después de la mezcla.

Para mayor confiabilidad, los sonidos externos (que provienen de fuentes independientes, como los sonidos de advertencia del cinturón de seguridad) se administran fuera de Android, por debajo de la HAL o incluso en hardware independiente. Los implementadores del sistema deben proporcionar un mezclador que acepte uno o más flujos de entrada de sonido de Android y, luego, combine esos flujos de una manera adecuada con las fuentes de sonido externas que requiere el vehículo. El HAL de Android Control proporciona un mecanismo diferente para que los sonidos generados fuera de Android se comuniquen con Android:

  • Solicitud de foco de audio
  • Limitaciones de ganancia o volumen
  • Cambios en la ganancia y el volumen

La implementación de la HAL de audio y el mezclador externo son responsables de garantizar que se escuchen los sonidos externos críticos para la seguridad y de mezclar los flujos proporcionados por Android y enrutarlos a los altavoces adecuados.

Sonidos de Android

Las apps pueden tener uno o más reproductores que interactúan a través de las APIs estándar de Android (por ejemplo, AudioManager para el control del enfoque o MediaPlayer para la transmisión) para emitir uno o más flujos lógicos de datos de audio. Estos datos pueden ser mono de un solo canal o envolvente 7.1, pero se enrutan y se tratan como una sola fuente. El flujo de la app se asocia con AudioAttributes que le dan al sistema sugerencias sobre cómo se debe expresar el audio.

Los flujos lógicos se envían a través de AudioService y se enrutan a uno (y solo uno) de los flujos de salida físicos disponibles, cada uno de los cuales es la salida de un mezclador dentro de AudioFlinger. Una vez que los atributos de audio se mezclan en una transmisión física, ya no están disponibles.

Luego, cada transmisión física se entrega al HAL de audio para su renderización en el hardware. En las apps para automóviles, el hardware de renderización puede ser códecs locales (similares a los de los dispositivos móviles) o un procesador remoto en la red física del vehículo. De cualquier manera, es tarea de la implementación del HAL de audio entregar los datos de muestra reales y hacer que se vuelvan audibles.

Transmisiones externas

Los flujos de sonido que no se deben enrutar a través de Android (por motivos de certificación o sincronización) se pueden enviar directamente al mezclador externo. A partir de Android 11, la HAL ahora puede solicitar el enfoque para estos sonidos externos y, así, informar a Android para que pueda tomar las medidas adecuadas, como pausar el contenido multimedia o evitar que otros obtengan el enfoque.

Si las transmisiones externas son fuentes de medios que deberían interactuar con el entorno de sonido que genera Android (por ejemplo, detener la reproducción de MP3 cuando se enciende un sintonizador externo), esas transmisiones externas deberían estar representadas por una app para Android. Dicha app solicitaría el foco de audio en nombre de la fuente de medios en lugar del HAL y respondería a las notificaciones de foco iniciando y deteniendo la fuente externa según sea necesario para ajustarse a la política de foco de Android.

La app también es responsable de controlar los eventos de teclas multimedia, como reproducir y pausar. Un mecanismo sugerido para controlar estos dispositivos externos es HwAudioSource. Para obtener más información, consulta Cómo conectar un dispositivo de entrada en AAOS.

Dispositivos de salida

En el nivel de la HAL de audio, el tipo de dispositivo AUDIO_DEVICE_OUT_BUS proporciona un dispositivo de salida genérico para usar en los sistemas de audio del vehículo. El dispositivo de bus admite puertos direccionables (en los que cada puerto es el extremo de una transmisión física) y se espera que sea el único tipo de dispositivo de salida compatible en un vehículo.

Una implementación del sistema puede usar un puerto de bus para todos los sonidos de Android, en cuyo caso Android mezcla todo y lo entrega como una sola transmisión. Como alternativa, la HAL puede proporcionar un puerto de bus para cada CarAudioContext para permitir la entrega simultánea de cualquier tipo de sonido. Esto permite que la implementación del HAL combine y atenúe los diferentes sonidos según sea necesario.

La asignación de contextos de audio a los dispositivos de salida se realiza a través del archivo car_audio_configuration.xml. Para obtener más información, consulta Configuración de la política de audio.