Dans Android 10, car_audio_configuration.xml
a été remplacé
car_volumes_groups.xml
et IAudioControl.getBusForContext
. Règle audio
, généralement contenus dans la partition du fournisseur, représentent le matériel audio
la configuration du tableau. Tous les appareils référencés dans
car_audio_configuration.xml
doit être défini dans
audio_policy_configuration.xml
La figure 1 ci-dessous présente une vue d'ensemble du service audio pour voiture. architecture dans laquelle le service audio de la voiture lit la configuration audio de la voiture pour configurer l'audio de l'appareil.
Figure 1 : Présentation de l'architecture audio pour voiture.
Placez le fichier de configuration audio de la voiture dans vendor\etc\
ou
system\etc\
sur l'appareil (avec le vendor\etc\
)
d’être le premier endroit à rechercher
le fichier par le service audio de la voiture. La voiture
les services audio lisent car_audio_configuration.xml
pour déterminer le contenu audio
configuration.
Zones du système audio pour voiture:
- Chaque zone audio contient un identifiant de zone audio unique.
- Chaque zone audio peut être mappée à une zone de l'occupant.
Les actions audio de chaque zone sont indépendantes les unes des autres:
- Priorité audio
- Routage audio
- Diminution du volume
Groupes de volumes de voiture:
Tous les appareils audio contenant un groupe de volumes sont contrôlés ensemble. avec les mêmes variations de gain. Configuration du gain audio pour tous les appareils dans un groupe doivent être identiques.
Mise en correspondance du contexte audio avec les appareils audio Utilisez-le pour créer une piste audio qui mappe les utilisations audio à un périphérique de sortie.
Tous les contextes audio doivent être représentés dans une zone. Cela permet pour que le routage audio soit correctement configuré pour toutes les utilisations d'attributs audio.
Contextes audio
Pour simplifier la configuration de l'audio AAOS, les utilisations similaires ont été regroupées
dans CarAudioContexts
. Ces contextes audio sont utilisés tout au long
CarAudioService
pour définir le routage, les groupes de volume, le ciblage audio et la diminution
gestion de la sécurité. Les contextes audio statiques dans AAOS sont listés ci-dessous.
Ce tableau décrit la correspondance entre les contextes audio et les utilisations. En surbrillance pour chaque nouvelle utilisation du système.
CarAudioContext | AttributeUsages associés |
---|---|
MUSIQUE | UNKNOWN GAME |
NAVIGATION | ASSISTANCE_NAVIGATION_GUIDANCE |
COMMANDE_VOCALE | ASSISTANT |
APPEL_SONNE | NOTIFICATION_RINGTONE |
APPELER | VOICE_COMMUNICATION VOICE_COMMUNICATION_SIGNALING |
ALARME | ALARM |
NOTIFICATION | NOTIFICATION NOTIFICATION_* |
SON SYSTÈME | ASSISTANCE_SONIFICATION |
URGENCE | EMERGENCY |
SÉCURITÉ | SAFETY |
VEHICLE_STATUS | VEHICLE_STATUS |
ANNONCE | ANNOUNCEMENT |
Activer le routage AAOS
Pour utiliser le routage basé sur AAOS, vous devez définir l'option audioUseDynamicRouting
sur
true
:
<resources>
<bool name="audioUseDynamicRouting">true</bool>
</resources>
Lorsque false
, le routage et une grande partie de CarAudioService
, est désactivé et AAOS cesse de fonctionner.
au comportement par défaut de AudioService
.
Zone principale
Par défaut, tout le contenu audio est acheminé vers la zone principale. Une seule zone principale
existe, comme l'indique la configuration par l'attribut
isPrimary="true"
La zone principale se voit automatiquement attribuer
Audiomanager.PRIMARY_AUDIO_ZONE
Exemple de configuration (version 2)
Par exemple, un véhicule peut comporter deux zones, une zone principale et un siège arrière.
de divertissement. Dans ce scénario, vous pouvez concevoir
car_audio_configuration.xml
version 2 comme suit:
<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>
Dans cet exemple, la zone principale sépare certains contextes audio
différents appareils. Cela permet au HAL d'appliquer différents post-traitement
et de mélanger les sorties sur chaque
appareil en utilisant le matériel du véhicule.
Les appareils ont été organisés en plusieurs
groupes de volumes: multimédia, navigation,
les appels, les alarmes
et les sons du système. Si le système est configuré pour
useFixedVolume
, les niveaux de volume de chaque groupe sont transmis au HAL.
à appliquer à la sortie de ces périphériques.
Pour la zone principale, nous vous recommandons de séparer les sons du système des autres sons. Les sons du véhicule sont ainsi traités avec une priorité plus élevée. Le service audio pour voiture effectue déjà ces distinctions pour les sons du véhicule en termes de concentration et de gestion. Par exemple, un signal sonore d'urgence a une priorité plus élevée qu'une autre.
Pour simplifier, dans l'exemple de zone secondaire, tous les contextes audio sont vers un seul appareil et un seul groupe de volumes.
Configuration audio de la zone de l'occupant
Dans Android 11, car_audio_configuration.xml
a été introduit
deux nouveaux champs, audioZoneId
et occupantZoneId
. Vous pouvez utiliser audioZoneId
pour contrôler la gestion des zones audio. Vous pouvez utiliser occupantZoneId
pour configurer
en fonction de l'ID utilisateur.
Nous revoyons la configuration audio ci-dessus, mais en utilisant le nouveau champ pour le mappage de l'ID de la zone de l'occupant et de celui de la zone audio, la nouvelle configuration sans les les définitions de groupes de volumes peuvent être configurées comme suit.
<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 configuration ci-dessus définit un mappage entre la zone principale et la zone de l'occupant 0.
et audioZoneId
de 1 à occupantZoneId
1. En général, tout mappage entre
la zone de l'occupant et la zone audio peuvent être configurées. Cependant, le mappage doit être
en tête-à-tête. Les règles qui définissent les deux nouveaux champs sont listées ci-dessous.
audioZoneId
pour la zone principale est toujours l'identifiantPRIMARY_AUDIO_ZONE
. SiisPrimary="true"
est défini, alorsaudioZoneId
n'est pas nécessaire.Les numéros
audioZoneId
etoccupantZoneId
ne peuvent pas être répétés.audioZoneId
etoccupantZoneId
ne peuvent avoir qu'un mappage "un à un".
Configuration audio pour voiture Android 14
Dans Android 14, AAOS a lancé le service de plug-in OEM, qui vous permet de gérer plus activement les comportements audio surveillés par la voiture service audio. Avec les nouveaux services de plug-ins, les modifications suivantes sont ajouté au fichier de configuration audio de la voiture:
- Contexte audio de la voiture défini par l'OEM
- Configurations dynamiques de zone secondaire
Contexte audio pour la voiture défini par l'OEM
Pour activer une configuration audio flexible, dans Android
14, le service audio de la voiture permet
que les utilisations de l'audio soient
regroupés différemment des contextes audio statiques définis ci-dessus.
Ce contexte défini par l'OEM peut être défini dans le fichier car_audio_configuration.xml
version 3 du fichier.
À la place, les contextes audio statiques actuellement définis sont utilisés. Généralités du contexte audio de voiture défini par l'OEM ci-dessous.
Les contextes OEM nécessitent chacun un name
, ainsi qu'une liste d'attributs audio.
qui sont affectés au contexte. Dans l'exemple ci-dessus, deux contextes sont
définie:
<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>
...
- Le contexte
media
contientAUDIO_USAGE_MEDIA
etAUDIO_USAGE_UNKNOWN
- Le contexte
game
ne contient queAUDIO_USAGE_GAME
.
Le contexte doit être défini en haut de car_audio_configuration.xml
.
. Une fois les contextes OEM définis, le reste de la configuration audio de la voiture
peut procéder comme précédemment. Les règles suivantes s'appliquent au contexte audio d'une voiture:
Les définitions de contexte OEM sont facultatives. Le contexte audio statique est utilisé à la place.
Ne répétez pas les noms des contextes.
N'attribuez pas l'utilisation d'attributs audio à plusieurs contextes.
Toutes les utilisations audio définies dans
AudioAttributes
doivent être utilisées pour créer le contexte.
À proprement parler, le android.audio.policy.configuration.V7_0.AudioUsage
La représentation sous forme de chaîne de l'utilisation du contenu audio doit être utilisée pour le contexte audio de l'OEM.
définition. À l'avenir, les utilisations d'attributs audio plus récentes seront attribuées au
le contexte le plus approprié pour réduire les erreurs lors de la migration depuis un
vers une autre version.
Le contexte défini par l'OEM a été introduit pour étendre davantage le plug-in OEM. service audio, il peut toujours être utilisé sans le service de plug-in OEM. Audio ressemble à celui du service audio statique:
Interactions avec priorité audio. L'attribut audio permet de déterminer le comportement de correspondance tel qu'il est configuré par la matrice d'interaction du ciblage audio. Pour consultez la section Priorité audio.
L'attribut audio de contrôle du volume permet de déterminer la meilleure correspondance:
- Groupe de volumes basé sur le contexte défini par l'OEM.
- Priorité de la liste des volumes statiques configurés.
Comportement de la diminution du volume:
L'utilisation de l'attribut audio pour le ciblage audio actuel est utilisée pour mapper le Diffuser les informations de l'appareil audio telles que définies dans la configuration audio de la voiture .
L'attribut audio est utilisé pour mapper le contexte statique correspondant à « duck », en fonction de la matrice statique d'atténuation.
Configurations des zones audio dynamiques
Sous Android 14, pour s'adapter à une zone audio dynamique le schéma de configuration audio pour la voiture permettant de définir des zones audio également mis à jour vers la version 3. Le nouveau schéma nécessite la mise en place d'une configuration pour chaque zone.
<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>
Pour en savoir plus, consultez le fichier version 3 défini dans
device/generic/car/emulator/audio/car_audio_configuration.xml
Début dans
sous Android 14, la zone principale ne peut comporter qu'une (1)
configuration. Les zones secondaires peuvent avoir plusieurs configurations. Les éléments suivants :
s'appliquent aux configurations audio pour voiture:
La zone audio principale ne peut avoir qu'une seule configuration.
Les zones audio secondaires peuvent avoir plusieurs configurations.
Le nom doit être unique pour chaque zone audio et chaque configuration de zone audio.
Dans une zone audio, les configurations audio peuvent varier:
- La configuration des groupes de volumes ne doit pas nécessairement être identique.
- L'attribution du contexte audio ne doit pas nécessairement être identique.
Les noms des périphériques de sortie audio doivent être uniques dans toutes les zones ou configurations. A le nom d'appareil ne doit apparaître qu'une seule fois dans une configuration audio ou une zone.
Les appareils audio appartenant au même groupe de volumes doivent partager le même contenu audio des configurations de gain.
Tous les contextes audio (OEM ou statiques) doivent être attribués à chaque contenu audio configuration.
Compatibilité ascendante
Bien que les nouvelles versions de car_audio_configuration.xml
introduisent de nouvelles
dans chaque mise à jour, vous pouvez toujours utiliser les anciens fichiers dans les nouvelles versions
AAOS. Les OEM qui effectuent la mise à jour vers les nouvelles versions d'Android peuvent réutiliser
car_audio_configuration.xml
.
Pour utiliser une nouvelle fonctionnalité nécessitant de nouvelles informations dans le
car_audio_configuration.xml
, la version doit être mise à jour. Tentative d'utilisation
Une ancienne version d'un fichier dont les informations ne sont pas compatibles
génère une erreur IllegalStateException
lorsque l'entretien du véhicule est lancé. L'exception
contient les informations pertinentes sur les informations utilisées et
la version minimale requise.