En Android 10, car_audio_configuration.xml
reemplazó
car_volumes_groups.xml
y IAudioControl.getBusForContext
. La política de audio
archivos que, por lo general, se encuentran en la partición del proveedor, representan el hardware de audio
configuración de la placa. Todos los dispositivos a los que se hace referencia en
car_audio_configuration.xml
debe definirse en
audio_policy_configuration.xml
En la Figura 1, se muestra una descripción general de alto nivel del servicio de audio para automóviles arquitectura en la que el servicio de audio del auto lee la configuración de audio del auto para configurar el audio del dispositivo.
Figura 1: Descripción general de la arquitectura de audio del automóvil
Coloca el archivo de configuración de audio del vehículo en vendor\etc\
.
system\etc\
en el dispositivo, con la vendor\etc\
fue el primer lugar que el servicio de audio del automóvil buscó el archivo. El auto
Los servicios de audio lee car_audio_configuration.xml
para determinar el audio
configuración.
Zonas de audio del automóvil:
- Cada zona de audio contiene un ID de zona de audio único.
- Cada zona de audio se puede asignar a una zona de ocupación.
Las acciones de audio de cada zona son independientes entre sí:
- Enfoque de audio
- Enrutamiento de audio
- Autosilenciado de fondo
Grupos de volumen del automóvil:
Todos los dispositivos de audio que contienen un grupo de volumen se controlan en conjunto con los mismos cambios de ganancia. La configuración de ganancia de audio para todos los dispositivos en un grupo debería ser la misma.
Contexto de audio a la asignación de dispositivos de audio. Úsala para construir un audio que asigna los usos de audio a un dispositivo de salida.
Todos los contextos de audio deben representarse dentro de una zona. Esto permite para que el enrutamiento de audio se configure con precisión para todos los usos de atributos de audio.
Contextos de audio
Para simplificar la configuración de audio AAOS, se agruparon usos similares
CarAudioContexts
. Estos contextos de audio se usan a lo largo
CarAudioService
para definir el enrutamiento, los grupos de volumen, el foco de audio y el autosilenciado de fondo
y administración de posturas. A continuación, se enumeran los contextos de audio estático en AAOS.
En esta tabla, se describe la asignación entre contextos y usos de audio. Destacado se proporcionan para un nuevo uso del sistema.
Contexto de CarAudio | AttributeUsages asociados |
---|---|
MÚSICA | UNKNOWN GAME |
NAVIGATION | ASSISTANCE_NAVIGATION_GUIDANCE |
VOICE_COMMAND | ASSISTANT |
LLAMADAS_LLAMADAS | NOTIFICATION_RINGTONE |
CALL | VOICE_COMMUNICATION VOICE_COMMUNICATION_SIGNALING |
ALARMA | ALARM |
NOTIFICACIÓN | NOTIFICATION NOTIFICATION_* |
SONIDO_SISTEMA | ASSISTANCE_SONIFICATION |
EMERGENCIA | EMERGENCY |
DE LA MARCA | SAFETY |
ESTADO_DE_VEHÍCULO | VEHICLE_STATUS |
ANUNCIO | ANNOUNCEMENT |
Habilitar enrutamiento AAOS
Para utilizar el enrutamiento basado en AAOS, debes establecer la marca audioUseDynamicRouting
como
true
<resources>
<bool name="audioUseDynamicRouting">true</bool>
</resources>
Cuando se inhabilita false
, el enrutamiento y gran parte de CarAudioService
, y el AAOS falla
el comportamiento predeterminado de AudioService
Zona principal
De forma predeterminada, todo el audio se enruta a la zona principal. Solo una zona principal
que se indica en la configuración mediante el atributo
isPrimary="true"
A la zona principal se le asigna automáticamente
Audiomanager.PRIMARY_AUDIO_ZONE
Configuración de muestra (versión 2)
Por ejemplo, un vehículo puede tener dos zonas, una zona principal y un asiento trasero.
un sistema de entretenimiento. En este escenario, puedes diseñar una posible
car_audio_configuration.xml
versión 2 de la siguiente manera:
<audioZoneConfiguration version="2.0">
<zone name="primary zone" isPrimary="true">
<volumeGroups>
<group>
<device address="bus0_media_out">
<context context="music"/>
<context context="announcement"/>
</device>
<device address="bus3_call_ring_out">
<context context="call_ring"/>
</device>
<device address="bus6_notification_out">
<context context="notification"/>
</device>
</group>
<group>
<device address="bus1_navigation_out">
<context context="navigation"/>
</device>
<device address="bus2_voice_command_out">
<context context="voice_command"/>
</device>
</group>
<group>
<device address="bus4_call_out">
<context context="call"/>
</device>
</group>
<group>
<device address="bus5_alarm_out">
<context context="alarm"/>
</device>
</group>
<group>
<device address="bus7_system_sound_out">
<context context="system_sound"/>
<context context="emergency"/>
<context context="safety"/>
<context context="vehicle_status"/>
</device>
</group>
</volumeGroups>
</zone>
<zone name="rear seat zone" audioZoneId="1">
<volumeGroups>
<group>
<device address="bus100_rear_seat">
<context context="music"/>
<context context="navigation"/>
<context context="voice_command"/>
<context context="call_ring"/>
<context context="call"/>
<context context="alarm"/>
<context context="notification"/>
<context context="system_sound"/>
<context context="emergency"/>
<context context="safety"/>
<context context="vehicle_status"/>
<context context="announcement"/>
</device>
</group>
</volumeGroups>
</zones>
</audioZoneConfiguration>
En este ejemplo, la zona principal separa algunos contextos de audio para
diferentes dispositivos. Esto permite que la HAL aplique diferentes
y mezclar la salida en cada dispositivo
mediante el hardware del vehículo.
Los dispositivos se organizaron en varios grupos de volumen: contenido multimedia, navegación,
llamadas, alarmas y sonidos del sistema. Si el sistema está configurado para
useFixedVolume
, los niveles de volumen de cada grupo se pasan a la HAL
para aplicar a la salida de estos dispositivos.
Para la zona principal, recomendamos que los sonidos del sistema estén separados de otros sonidos. Esto permite que los sonidos del vehículo se traten con una prioridad más alta. El servicio de audio para automóviles ya hace estas distinciones con respecto a los sonidos del vehículo en en términos de enfoque y administración de atenuación. Por ejemplo, un foco de sonido de emergencia tiene mayor prioridad que otra solicitud de foco.
Para simplificar, en el ejemplo de la zona secundaria, se enrutados a un solo dispositivo y a un grupo de volúmenes.
Configuración de audio de la zona ocupada
En Android 11, car_audio_configuration.xml
introdujo
dos campos nuevos, audioZoneId
y occupantZoneId
. Puedes usar audioZoneId
para controlar la administración de zonas de audio. Puedes usar occupantZoneId
para configurar
el enrutamiento basado en el ID del usuario.
Revisión de la configuración de audio anterior, pero con el nuevo campo para la asignación de ID de zona de ocupante e ID de zona de audio, la nueva configuración sin el Las definiciones de grupos de volúmenes se pueden configurar de la siguiente manera.
<audioZoneConfiguration version="2.0">
<zone name="primary zone" isPrimary="true" occupantZoneId="0">
...
</zone>
<zone name="rear seat zone" audioZoneId="1" occupantZoneId="1">
...
</zone>
</zones>
</audioZoneConfiguration>
La configuración anterior define una asignación de la zona principal a la zona de ocupación 0.
y audioZoneId
1 a occupantZoneId
1. En general, cualquier asignación entre
se pueden configurar la zona de ocupación y la zona de audio. Sin embargo, la asignación debe estar
para tener conversaciones individuales. A continuación, se enumeran las reglas que definieron los dos nuevos campos.
audioZoneId
para la zona principal es siemprePRIMARY_AUDIO_ZONE
id. Si Se definióisPrimary="true"
, por lo que no se necesitaráaudioZoneId
.Los números de
audioZoneId
yoccupantZoneId
no se pueden repetir.audioZoneId
yoccupantZoneId
solo pueden tener una asignación de uno a uno.
Configuración de audio para autos de Android 14
En Android 14, AAOS introdujo el servicio de complementos del OEM, lo que permite controlar más activamente el comportamiento de audio supervisado por el vehículo servicio de audio. Junto con los nuevos servicios de complementos, se aplican los siguientes cambios: al archivo de configuración de audio del vehículo:
- Contexto del audio para automóviles definido por el OEM
- Configuraciones dinámicas de zonas no principales
Contexto del audio para automóviles definido por el OEM
Para habilitar una configuración de audio flexible, en Android
14, el servicio de audio para el automóvil permite que los usos de audio
que se agrupan de manera diferente a los contextos de audio estáticos que se definieron antes.
Este contexto definido por el OEM se puede definir en el archivo car_audio_configuration.xml
.
de la versión 3 del archivo.
En su lugar, se usan los contextos de audio estático definidos actualmente. En general, correspondiente al contexto del audio para el automóvil definido por el OEM.
Cada contexto de OEM requiere un name
junto con una lista de atributos de audio.
de uso que se asignan al contexto. En el ejemplo anterior, hay dos contextos
definido:
<carAudioConfiguration version="3">
<oemContexts>
<oemContext name="media">
<audioAttributes>
<usage value="AUDIO_USAGE_MEDIA" />
<usage value="AUDIO_USAGE_UNKNOWN"/>
</audioAttributes>
</oemContext>
<oemContext name="game">
<audioAttributes>
<usage value="AUDIO_USAGE_GAME" />
</audioAttributes>
</oemContext>
...
- El contexto
media
contieneAUDIO_USAGE_MEDIA
yAUDIO_USAGE_UNKNOWN
- El contexto
game
contiene soloAUDIO_USAGE_GAME
El contexto debe definirse en la parte superior de car_audio_configuration.xml
.
. Cuando se definen los contextos del OEM, se aplica el resto de la configuración de audio del vehículo.
puedes continuar como antes. Las siguientes reglas se aplican al contexto del audio del vehículo:
Las definiciones del contexto de OEM son opcionales. El contexto de audio estático es en su lugar.
No repitas nombres de contextos.
No asignes el uso de atributos de audio a varios contextos.
Todos los usos de audio definidos en
AudioAttributes
deben emplearse para construir el contexto.
En sentido estricto, android.audio.policy.configuration.V7_0.AudioUsage
Se debe usar una representación de cadena del uso de audio para el contexto de audio del OEM.
definición. En el futuro, los usos más recientes de atributos de audio se asignarán al
el contexto más adecuado para reducir los errores durante la migración desde un SO Android
una versión a otra.
Si bien se introdujo el contexto definido por el OEM para expandir aún más el complemento del OEM servicio de audio, se puede usar sin el servicio de complemento del OEM. El audio se asemeja al del servicio de audio estático:
Interacciones de foco de audio El atributo de audio se usa para determinar la mejor comportamiento de coincidencia según la configuración de la matriz de interacción del foco de audio. Para consulta Enfoque de audio.
El atributo de audio de control de volumen del audio se utiliza para determinar la mejor coincidencia:
- Grupo de volúmenes basado en el contexto definido por el OEM.
- Prioridad de la lista de volúmenes estáticos configurada.
Comportamiento de autosilenciado de fondo:
El uso del atributo de audio para el foco de audio actual se utiliza para asignar al salida de información del dispositivo de audio, como se define en la configuración de audio del vehículo .
El atributo de audio se usa para asignar el contexto estático correspondiente a duck. según la matriz de autosilenciado de fondo estático.
Parámetros de configuración de zonas de audio dinámicas
En Android 14, para admitir zonas de audio dinámicas el esquema de configuración del audio del automóvil para definir las zonas de audio también se actualizó a la versión 3. Es necesario establecer una configuración para el nuevo esquema para cada zona.
<carAudioConfiguration version="3">
<!-- optional OEM context -->
<oemContexts>
<oemContext name="media">
<audioAttributes>
<usage value="AUDIO_USAGE_MEDIA" />
<usage value="AUDIO_USAGE_UNKNOWN"/>
</audioAttributes>
</oemContext>
<oemContext name="game">
<audioAttributes>
<usage value="AUDIO_USAGE_GAME" />
</audioAttributes>
</oemContext>
...
</oemContexts>
<zones>
<zone name="primary zone" isPrimary="true" occupantZoneId="0">
<zoneConfigs>
<zoneConfig name="primary zone config 0" isDefault="true">
<volumeGroups>
<group>
<device address="bus0_media_out">
<context context="media"/>
<context context="game"/>
<context context="announcement"/>
</device>
<device address="bus6_notification_out">
<context context="notification"/>
</device>
</group>
...
</zoneConfigs>
</zone
</zones>
Para obtener más información, consulta el archivo de la versión 3 definido en
device/generic/car/emulator/audio/car_audio_configuration.xml
Comienza en
Android 14, la zona principal solo puede tener una (1)
configuración. Las zonas no principales pueden tener varios parámetros de configuración. Lo siguiente
se aplican a las configuraciones de audio del automóvil:
La zona de audio principal puede tener solo una configuración.
Las zonas de audio no principales pueden tener varias configuraciones.
El nombre debe ser único para cada zona de audio y configuración de zona de audio.
Dentro de una zona de audio, las configuraciones de audio pueden variar:
- No es necesario que la configuración de los grupos de volúmenes sea la misma.
- No es necesario que la asignación de contexto de audio sea la misma.
Los nombres de dispositivos de salida de audio deben ser únicos en todas las zonas o configuraciones. R el nombre del dispositivo debe aparecer solo una vez en una o varias zonas de una configuración de audio.
Los dispositivos de audio que pertenezcan al mismo grupo de volúmenes deben tener el mismo audio y obtener parámetros de configuración.
Se deben asignar todos los contextos de audio (OEM o estático) a cada audio configuración.
Compatibilidad con versiones posteriores
Si bien las nuevas versiones de car_audio_configuration.xml
presentan nuevas
de cada actualización, podrás seguir usando los archivos más antiguos en las versiones más recientes de
AAOS. Los OEM que actualicen a las nuevas versiones de Android pueden reutilizar la
car_audio_configuration.xml
.
Para usar una función nueva que requiere información nueva incluida en las
car_audio_configuration.xml
, se debe actualizar la versión. Intento de uso
una versión anterior de un archivo con información no admitida en esa versión
Arroja una IllegalStateException
cuando se inicia el servicio del automóvil. La excepción
contiene información relevante sobre la información que se usa y
qué versión mínima se requiere.