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, contenido multimedia, navegación y comunicaciones), pero no es directamente responsable de los timbres y las advertencias que tienen requisitos estrictos de disponibilidad y sincronización.
Si bien AAOS proporciona señales y mecanismos para ayudar al vehículo a administrar el audio, en última instancia, depende del vehículo decidir qué sonidos se deben reproducir para el conductor y los pasajeros, lo que garantiza que los sonidos de seguridad y 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 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 representarse mediante apps que puedan controlar el foco de audio y los eventos de teclas multimedia para la fuente.
Sonidos y transmisiones de Android
Los sistemas de audio automotriz controlan los siguientes sonidos y transmisiones:
Figura 1: Diagrama de arquitectura centrado 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 la 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 mayor confiabilidad, los sonidos externos (que provienen de fuentes independientes, como los timbres de advertencia del cinturón de seguridad) se administran fuera de Android, debajo de la 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 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 de ganancia y volumen
La implementación de la HAL de audio y el mezclador externo son responsables de garantizar que se escuchen los sonidos externos de seguridad y de mezclar las transmisiones proporcionadas por Android y enrutarlas 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 de foco 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 sonido 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 la salida de un mezclador dentro de AudioFlinger. Después de 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 a la HAL de audio para su procesamiento en el hardware. En las apps automotrices, el hardware de procesamiento puede ser códecs locales (similares a 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 de la 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 sincronización) se pueden enviar directamente al mezclador externo. A partir de Android 11, la HAL ahora puede solicitar el foco para estos sonidos externos para informar a Android de modo que pueda realizar las acciones adecuadas, como pausar el contenido multimedia o evitar que otros obtengan el foco.
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 representarse con una app para Android. Esa app solicitaría el foco de audio en nombre de la fuente de contenido multimedia en lugar de la 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 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 sistemas de audio de vehículos. El dispositivo de 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 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 la HAL mezcle y atenúe los diferentes sonidos según se 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.