El servicio de audio del automóvil usa la política de audio dinámico de Core Audio para facilitar el uso en automóviles.
La reproducción de audio separada para cada pasajero, también conocida como audio multizona, en el que cada zona permite la reproducción simultánea de sonido.
Configuración dinámica de zonas de audio.
Transmisión de audio de la zona principal del pasajero.
Duplicación de audio del pasajero.
En cada caso de uso, el servicio de audio del vehículo usa la política de audio dinámico para enrutar automáticamente el audio al dispositivo de salida designado.
Audio multizona
El audio multizona permite que varios usuarios interactúen simultáneamente con AAOS. R dispositivo de salida está asociado con una zona, y cada zona mantiene el audio enfoque y nivel de volumen. Los pasajeros pueden escuchar su audio mientras el conductor Escucha otra fuente en la zona principal (por lo general, la cabina principal).
Arquitectura de audio multizona
Figura 1: Arquitectura del servicio de audio del automóvil
Las zonas de audio del vehículo son una abstracción de salidas de audio, foco de audio y otras configuración de audio, que se pueden administrar de forma independiente. Para fines de enrutamiento, cada zona se define como un conjunto de dispositivos de bus de salida de audio de la política de audio. Los dispositivos difieren para cada definición de zona de audio. En la Figura 1, los dispositivos de bus 1 a 5 pertenecen a la zona cero, los dispositivos bus 6 a 8 pertenecen a la zona uno y los dispositivos de bus 9 a 11 pertenecen a la zona dos.
Configuración del audio del auto
Por lo general, los dispositivos de salida se asignan a una zona de audio. Cada zona de audio
definido en car_audio_configuration.xml
. En el siguiente fragmento de código, se muestra un auto
de audio en la Figura 1:
<carAudioConfiguration version="3">
<zones>
<zone name="Zone0" audioZneId="0" occupantZoneId="0">
<zoneConfigs>
<zoneConfig name="config0" isDefault="true">
<volumeGoups>
<group>
<device address="bus_1">
<context context="music"/>
</device>
</group>
<group>
<device address="bus_2">
<context context="navigation"/>
</device>
</group>
...
</volumeGroups>
</zoneConfig>
</zoneConfigs>
</zone>
<zone name="Zone1" audioZoneId="1" occupantZoneId="1">
<zoneConfigs>
<zoneConfig name="config0" isDefault="true">
<volumeGroups>
<group>
<device address="bus_6">
<context context="music"/>
</device>
</group>
<group>
<device address="bus_7">
<context context="navigation"/>
</device>
</group>
...
</volumeGroups>
</zoneConfig>
</zoneConfigs>
</zone>
...
...
</zones>
</carAudioConfiguration>
occupantZoneId
es una definición de servicio de automóvil administrada por
CarOccupantZoneManager
Se usa en autos para definir una asignación para un usuario en
el vehículo a una ubicación específica. CarOccupantZoneService
también define
mapeo de la zona de ocupación a las pantallas, otros periféricos y el usuario una vez que
el usuario accede a una pantalla. Una zona de audio tiene lo siguiente:
Un ID de zona de audio y un ID de zona de ocupante.
- Asigna la zona de audio a la zona de ocupación (asiento, pantallas y otros periféricos)
- Asigna el ID de usuario que se asigna con una zona de audio cuando se accede
Una lista de parámetros de configuración de audio. Cada configuración de audio tiene un conjunto grupos de volúmenes. Cada grupo de volúmenes tiene un conjunto de dispositivos de bus de audio.
Cuando se cambia el volumen, todos los dispositivos de audio de un grupo se controlan en de la misma manera.
A cada dispositivo de audio se le asigna una lista de atributos de audio. Esta se usa información para crear la política de audio se mezcla con atributos de audio asignados.
Esta configuración permite enrutar diferentes usos de atributos de audio diferentes dispositivos de salida en cada zona. Según el caso de uso, se pueden usar los sonidos pueden reproducirse al mismo tiempo. Por ejemplo, puedes configurar el estado cabina (zona principal) para reproducir sonidos multimedia en todas las bocinas, excepto en los sonidos de navegación solo en las bocinas más cercanas al conductor. Con la reproducción simultánea de sonido, el la cabina principal continúa escuchando contenido multimedia mientras se entrega la navegación a la controlador.
Flujo de trabajo de acceso con audio multizona para pasajeros
El siguiente diagrama de secuencias muestra el flujo para habilitar el enrutamiento de audio cuando un registros de pasajeros en sus respectivas pantallas:
Figura 2:
En esta secuencia, el acceso del usuario se propaga al servicio de audio del vehículo a través del servicio de la zona de ocupantes.
El servicio de audio del auto (para una zona de audio específica) usa La API de
AudioPolicy#removeUserIdDeviceAffinity
para quitar el dispositivo del usuario públicos afines. Esta API toma un ID de usuario. En este caso, el espacio de nombres usuario.La API de
AudioPolicy#setUserIdDeviceAffinity
asigna el usuario nuevo a un que recibe el ID del usuario y todos los dispositivos de una zona específica configuración.
Configuraciones de zonas dinámicas
En Android 14, las configuraciones de las zonas dinámicas son para permitir que los OEM configuren diferentes conjuntos de dispositivos para los pasajeros. El caso de uso permite que los pasajeros del asiento trasero cambien de un asiento trasero y un periférico para auriculares en el asiento trasero.
En este caso, se requieren dos configuraciones. Uno para el asiento trasero y el periférico de los auriculares. Se enruta el audio de un usuario específico solo a una configuración a la vez.
Figura 3: Flujo de trabajo de configuración de zonas dinámicas.
En la figura 3, se ilustra la arquitectura para la configuración de zonas dinámicas
en el flujo de trabajo. La zona de audio 1 contiene dos configuraciones, Config 0
y Config 1
,
asociados con la bocina y el reposacabezas del dispositivo de salida, respectivamente.
Después de acceder, al usuario se le asigna automáticamente la configuración predeterminada. Cuando el usuario elige cambiar la configuración, generalmente a través de una IU del sistema, la El servicio de audio para autos ejecuta el cambio entre las dos configuraciones. En este el dispositivo de salida se cambia entre la bocina Z1 y el reposacabezas Z1.
En el siguiente fragmento de código, se muestra la configuración de esta zona dinámica.
<carAudioConfiguration version="3">
<zones>
<zone name="Zone1" audioZoneId="1" occupantZoneId="1">
<zoneConfigs>
<zoneConfig name="Zone 1 Config 0" isDefault="true">
<volumeGroups>
<group>
<device address="bus_100">
<context context="music"/>
***
</device>
</group>
</volumeGroups>
</zoneConfig>
<zoneConfig name="Zone 1 Config 1">
<volumeGroups>
<group>
<device address="bus_101">
<context context="music"/>
***
</device>
</group>
</volumeGroups>
</zoneConfig>
</zoneConfigs>
</zone>
</zones>
Para facilitar la administración de la configuración de audio, el administrador de audio del vehículo expone las APIs para administrar la configuración:
- Configuraciones de consulta disponibles para una zona.
- Consulta actualmente la configuración establecida para una zona.
- Cambia a una configuración diferente.
Una app o servicio de IU del sistema puede usar estas API para administrar la configuración del de audio como se muestra en la figura 4. La API de consulta expone los dos al pasajero. El usuario puede seleccionar una configuración diferente presionando un comando para la la configuración deseada.
Figura 4: Flujo de trabajo de configuración de zonas dinámicas.
Transmisión de audio de los pasajeros de la zona principal
La transmisión de audio de los pasajeros de la zona principal es una función que se introdujo en Android 14 para permitir que los pasajeros transmitan su audio multimedia en la zona principal. En este el audio multimedia del pasajero puede transmitirse a la cabina principal, mientras el el conductor siga teniendo el control total.
En la siguiente figura, se muestra una versión simplificada de la arquitectura para la instancia transmisión de audio multimedia de pasajeros de zona.
Figura 5: Flujo de trabajo de configuración de zonas dinámicas.
En la imagen, se muestra que el dispositivo de salida multimedia del controlador se comparte con el pasajero, esto solo ocurre cuando el pasajero se transmite a la zona principal . La política de audio dinámico también se usa para administrar el enrutamiento de audio para el pero no se aplicarán cambios en los afinidades de dispositivos del controlador. Para al pasajero, la lista de dispositivos de salida se modifica de la siguiente manera:
- Se quitó el dispositivo de salida multimedia del pasajero de la lista de dispositivos
- Se agregó el dispositivo de salida multimedia del controlador a la lista de dispositivos
- Los dispositivos de salida restantes para las zonas de audio de los pasajeros permanecen en la lista de dispositivos.
El pasajero asigna esta nueva lista de dispositivos al pasajero.
API de AudioPolicy#setUserIdDeviceAffinity
. Los parámetros que se pasan a la API son
la lista de dispositivos y el ID de usuario pasajero. Cuando el audio del sistema de audio
El servicio de políticas consulta qué combinación de audio se seleccionará para una pista de medios.
asociado con el pasajero, la combinación de audio multimedia asociada con el
zona seleccionada.
Un requisito clave para la transmisión de audio de la zona principal es que el contenido multimedia de la zona principal que el dispositivo de salida esté aislado de otros usos de atributos de audio. De lo contrario, durante construcción de las mezclas de audio, se agregan otros atributos de audio a la mezcla. Cuando el sistema de audio realiza la selección de mezcla, todos los sonidos adjuntos a el mix se seleccionará para su reproducción en la cabina principal.
Duplicación de audio de la zona de pasajeros
La función de duplicación de audio permite a los pasajeros compartir audio. La función de espejo duplica los datos de audio en cada zona de audio para que todos los pasajeros puedan escuchar el mismo audio. En este caso, el foco de audio se comparte con los pasajeros involucradas en la duplicación de audio.
Enrutamiento de duplicación de audio
Se necesita un mínimo de dos pasajeros para habilitar la duplicación de audio. Como como resultado, una configuración de audio con solo dos zonas de audio para pasajeros a un dispositivo de salida duplicado. Con la definición anterior, se pueden usar dos se pueden iniciar sesiones.
En la siguiente figura, se muestra un diagrama simplificado de la duplicación de audio multizona.
entre dos pasajeros. El audio de ambos pasajeros se envía a una duplicación de audio.
dispositivo, bus_1000
. La HAL de audio duplica la señal en las zonas de origen.
Figura 6: Flujo de trabajo de configuración de zonas dinámicas.
Esta ruta se habilita solo cuando los pasajeros están en modo de duplicación. Si
no, los dispositivos correspondientes a la zona de audio se asignan a los pasajeros.
Cuando se habilita la duplicación para un pasajero,
La API de AudioPolicy#setUserIdDeviceAffinity
modifica el enrutamiento:
- Se quitó el dispositivo de salida multimedia del pasajero de la lista de dispositivos.
- Se agregó el dispositivo de salida de duplicación a la lista de dispositivos.
- Los dispositivos de salida restantes de la zona de audio para pasajeros permanecen en la lista de dispositivos.
Con la lista de dispositivos, se llama a la API con la lista actualizada de dispositivos y el ID de usuario del pasajero. En la siguiente imagen, se proporciona un diagrama de secuencia del de la duplicación de audio.
Figura 7: Flujo de trabajo de duplicación de audio
En la figura 7, se muestran las APIs del administrador de audio del auto para administrar la duplicación de audio.
llamado desde el servicio de sistema multimedia. Específicamente, la API para habilitar el audio
de duplicación para el Usuario 1 y el Usuario 2, CarAudioManager#enableMirrorForAudioZones
.
El servicio de audio del automóvil configura el enrutamiento de audio para los pasajeros del automóvil como descrita anteriormente. El servicio de audio del automóvil también envía una señal a la HAL de audio para configurar y duplicar el audio del dispositivo duplicado al correspondiente zonas diferentes.
En la imagen de arriba, el servicio de audio del auto envía
mirroring_src=bus_1000;mirroring_dest=bus_10,bus_20
donde,
bus_1000
es el autobús de origen, y bus_10
y bus_20
son el destino.
autobuses.
No se muestra en el diagrama de secuencia es la señal que se envía a través del
API de AudioManager#setParameters
, que llega a la HAL a través del audio
servicio.
Cuando se inhabilita la duplicación de audio, se envía la siguiente señal:
mirroring_src=bus_1000;mirroring=off
La HAL puede usar esta señal para
Inhabilita la duplicación de audio cuando la duplicación de audio no está habilitada. Cómo definir audio
para duplicar dispositivos, el archivo de configuración de audio del auto contiene una sección
mirroringDevices
, como se muestra en el siguiente fragmento.
En este fragmento, se definen dos dispositivos de duplicación, bus_1000
y bus_2000
,
para que cuatro pasajeros puedan usar la duplicación de audio.
<carAudioConfiguration version="3">
<mirroringDevices>
<mirroringDevice address="bus_1000"/>
<mirroringDevice address="bus_2000"/>
</mirroringDevices>
<zones>
....
</zones>
</carAudioConfiguration>