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 advertencias que tienen requisitos estrictos de disponibilidad y tiempo.
Si bien el AAOS proporciona indicadores y mecanismos para ayudar al vehículo a administrar el audio, al final depende del vehículo decidir qué sonidos se deben reproducir para el conductor y los pasajeros, lo que garantiza que los sonidos esenciales para la seguridad y los sonidos regulatorios 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 de lo que harían en los teléfonos. El AAOS administra automáticamente el enrutamiento de audio de la aplicación, como se describe en Configuración de la política de audio.
Como Android administra la experiencia multimedia del vehículo, las fuentes de contenido multimedia externas, como el sintonizador de radio, deben estar representadas por apps, que pueden controlar el foco de audio y los eventos de teclas de medios de la fuente.
Sonidos y transmisiones de Android
Los sistemas de audio para vehículos controlan los siguientes sonidos y transmisiones:
Figura 1: Diagrama de arquitectura centrada en la transmisión.
Android administra los sonidos que provienen de las apps para Android, controla esas apps y enruta sus sonidos a los dispositivos de salida en el HAL según el tipo de sonido:
Las transmisiones lógicas, conocidas como fuentes en la nomenclatura de audio principal, se etiquetan con atributos de audio.
Las transmisiones físicas, conocidas como dispositivos en la nomenclatura de audio principal, no tienen información de contexto después de la mezcla.
Para garantizar la confiabilidad, los sonidos externos (que provienen de fuentes independientes, como las campanillas de advertencia del cinturón de seguridad) se administran fuera de Android, debajo del HAL o incluso en hardware independiente. Los implementadores del sistema deben proporcionar un mezclador que acepte una o más transmisiones de entrada de sonido de Android y, luego, combine esas transmisiones de una manera adecuada con las fuentes de sonido externas que requiere el vehículo. La HAL de control de Android 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 el volumen y el aumento
La implementación de HAL de audio y el mezclador externo son responsables de garantizar que se escuchen los sonidos externos críticos para la seguridad, de mezclar las transmisiones proporcionadas por Android y de enrutarlas a bocinas adecuadas.
Sonidos de Android
Las apps pueden tener uno o más reproductores que interactúan a través de las APIs de Android estándar (por ejemplo, AudioManager para el control de enfoque o MediaPlayer para la transmisión) para emitir una o más transmisiones lógicas 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. La transmisión de la app está asociada con AudioAttributes que le dan al sistema sugerencias sobre cómo se debe expresar el audio.
Las transmisiones lógicas se envían a través de AudioService y se enrutan a una (y solo una) de las transmisiones de salida físicas disponibles, cada una de las cuales es el resultado de un mezclador dentro de AudioFlinger. Una vez que los atributos de audio se mezclaron en una transmisión física, ya no están disponibles.
Luego, cada transmisión física se entrega al HAL de audio para renderizarla en el hardware. En las apps para la industria automotriz, el hardware de renderización puede ser un códec local (similar a los dispositivos móviles) o un procesador remoto en la red física del vehículo. De cualquier manera, es la tarea de la implementación de HAL de audio entregar los datos de muestra reales y hacer que se vuelvan audibles.
Transmisiones externas
Las transmisiones de sonido que no se deben enrutar a través de Android (por motivos de certificación o de tiempo) se pueden enviar directamente al mezclador externo. A partir de Android 11, el HAL ahora puede solicitar el enfoque de estos sonidos externos para informar a Android de modo que pueda tomar las medidas adecuadas, como pausar el contenido multimedia o evitar que otros elementos se enfoquen.
Si las transmisiones externas son fuentes de contenido multimedia que deben 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 deben estar representadas por una app para Android. Dicha app solicitaría el foco de audio en nombre de la fuente de contenido multimedia en lugar del HAL y respondería a las notificaciones de enfoque iniciando y deteniendo la fuente externa según sea necesario para adaptarse a la política de enfoque de Android.
La app también es responsable de controlar los eventos de teclas multimedia, como reproducir y pausar. Un mecanismo sugerido para controlar esos 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 de vehículos. El dispositivo bus admite puertos direccionables (en los que cada puerto es el punto final 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 de HAL mezcle y disminuya los diferentes sonidos como desee.
La asignación de contextos de audio a 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.