In Android 10 ersetzt car_audio_configuration.xml
car_volumes_groups.xml
und IAudioControl.getBusForContext
. Audiorichtlinie
Dateien, die in der Regel in der Anbieterpartition enthalten sind, stehen für die Audiohardware
Konfiguration des Boards. Alle Geräte, auf die verwiesen wird in
car_audio_configuration.xml
muss definiert werden in
audio_policy_configuration.xml
.
Abbildung 1 zeigt eine allgemeine Übersicht über den Audiodienst des Autos. Architektur, in der der Audiodienst des Autos die Audiokonfiguration des Autos liest -Datei, um den Ton für das Gerät einzurichten.
Abbildung 1: Die Audioarchitektur eines Autos im Überblick.
Legen Sie die Audio-Konfigurationsdatei des Autos in vendor\etc\
ab oder
system\etc\
auf dem Gerät mit dem vendor\etc\
dass der Auto-Audiodienst als Erstes nach der Datei gesucht hat. Das Auto
Audiodienste lesen car_audio_configuration.xml
, um die Audiodaten zu bestimmen
Konfiguration.
Auto-Audiobereiche:
- Jeder Audiobereich enthält eine eindeutige Audiozonen-ID.
- Jeder Audiobereich kann einer Insassenzone zugeordnet werden.
Die Audioaktionen in den einzelnen Zonen sind unabhängig voneinander:
- Audiofokus
- Audio routing
- Audio-Ducking
Autovolumengruppen:
Alle Audiogeräte mit einer Lautstärkegruppe werden gemeinsam gesteuert mit den gleichen Gewinnänderungen. Konfiguration der Audioverstärkung für alle Geräte in einer Gruppe identisch sein.
Zuordnung von Audiokontext zu Audiogeräten. Hiermit können Sie eine Audiodatei erstellen. der Audionutzungen einem Ausgabegerät zuordnet.
Alle Audiokontexte sollten innerhalb einer Zone dargestellt werden. Dadurch können Sie damit das Audiorouting für alle Verwendungen von Audioattributen korrekt eingerichtet ist.
Audiokontexte
Um die Konfiguration von AAOS-Audio zu vereinfachen, wurden ähnliche Nutzungen gruppiert
in CarAudioContexts
. Diese Audiokontexte werden im gesamten
CarAudioService
zum Definieren von Routing, Lautstärkegruppen, Audiofokus und Ducking
zu verstehen. Die statischen Audio-Kontexte in AAOS sind unten aufgeführt.
In dieser Tabelle wird die Zuordnung zwischen Audiokontexten und -verwendungen beschrieben. Hervorgehoben werden Zeilen für eine neue Systemnutzung bereitgestellt.
Kontext für Auto-Audio | Zugeordnete Attributverwendungen |
---|---|
MUSIK | UNKNOWN GAME |
NAVIGATION | ASSISTANCE_NAVIGATION_GUIDANCE |
VOICE_BEFEHL | ASSISTANT |
ANRUFERKLÄRUNG | NOTIFICATION_RINGTONE |
ANRUFEN | VOICE_COMMUNICATION VOICE_COMMUNICATION_SIGNALING |
WECKER | ALARM |
BENACHRICHTIGUNG | NOTIFICATION NOTIFICATION_* |
SYSTEM_TON | ASSISTANCE_SONIFICATION |
NOTFALL | EMERGENCY |
SICHERHEIT | SAFETY |
Fahrzeugstatus | VEHICLE_STATUS |
MITTEILUNG | ANNOUNCEMENT |
AAOS-Routing aktivieren
Wenn Sie AAOS-basiertes Routing verwenden möchten, müssen Sie das Flag audioUseDynamicRouting
auf
true
:
<resources>
<bool name="audioUseDynamicRouting">true</bool>
</resources>
Wenn false
, Routing und ein Großteil von CarAudioService
deaktiviert sind und AAOS fällt
auf das Standardverhalten von AudioService
zurücksetzen.
Primäre Zone
Standardmäßig werden alle Audiodaten an die primäre Zone geleitet. Nur eine primäre Zone
existiert, was in der Konfiguration durch das Attribut
isPrimary="true"
Der primären Zone wird automatisch die
Audiomanager.PRIMARY_AUDIO_ZONE
Beispielkonfiguration (Version 2)
Ein Fahrzeug kann beispielsweise zwei Zonen haben: eine primäre Zone und einen Rücksitz.
Unterhaltungssystem. In diesem Szenario
können Sie eine mögliche
car_audio_configuration.xml
Version 2 wie folgt:
<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>
In diesem Beispiel trennt die primäre Zone einige Audiokontexte
auf unterschiedlichen Geräten. Dadurch kann der HAL verschiedene Nachbearbeitungen
und die Ausgabe auf den einzelnen Geräten
mit der Hardware des Fahrzeugs zu mischen.
Die Geräte sind in verschiedene Lautstärkegruppen unterteilt: Medien, Navigation,
Anrufe, Wecker und Systemtöne. Wenn das System so konfiguriert ist,
useFixedVolume
, werden die Lautstärkepegel für jede Gruppe an den HAL übergeben.
die auf die Ausgabe dieser Geräte angewendet werden soll.
Für die Hauptzone empfehlen wir, Systemtöne getrennt von anderen Geräusche. Dadurch können Fahrzeugtöne mit höherer Priorität behandelt werden. Der Auto-Audiodienst unterscheidet diese Unterscheidung bereits bei Fahrzeuggeräuschen in des Fokus und des Ducking-Managements. Ein Notfallgeräusch beispielsweise -Anfrage eine höhere Priorität als eine andere Fokusanfrage.
Der Einfachheit halber sind im Beispiel der sekundären Zone alle Audiokontexte an ein einzelnes Gerät und eine Lautstärkegruppe weitergeleitet.
Audiokonfiguration der Insassenzone
Mit Android 11 wurde car_audio_configuration.xml
eingeführt.
zwei neue Felder, audioZoneId
und occupantZoneId
. Du kannst audioZoneId
verwenden
um die Verwaltung der Audiozone zu steuern. Mit occupantZoneId
können Sie
auf Nutzer-ID basierende Weiterleitung.
Wir gehen noch einmal auf die obige Audiokonfiguration zurück, aber verwenden das neue Feld für der Belegungszone und der Audiozonen-ID zuordnen, wurde die neue Konfiguration ohne die Volumengruppendefinitionen können so eingerichtet werden.
<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>
Die obige Konfiguration definiert eine Zuordnung von primärer Zone zur Insassenzone 0
und audioZoneId
1 bis occupantZoneId
1. Im Allgemeinen ist jede Zuordnung zwischen
Insassenbereich und Audiobereich konfiguriert werden. Die Zuordnung muss jedoch
in zwei Gruppen. Die Regeln, durch die die beiden neuen Felder definiert wurden, sind unten aufgeführt.
audioZoneId
für die primäre Zone ist immer diePRIMARY_AUDIO_ZONE
-ID. WennisPrimary="true"
ist definiert, dann wirdaudioZoneId
nicht benötigt.audioZoneId
- undoccupantZoneId
-Nummern dürfen nicht wiederholt werden.audioZoneId
undoccupantZoneId
können nur eine 1:1-Zuordnung haben.
Android 14-Audiokonfiguration für Autos
Unter Android 14 führte AAOS den OEM-Plug-in-Dienst ein, So kannst du das Audioverhalten des Autos aktiver steuern Audiodienst Neben den neuen Plug-in-Diensten gibt es folgende Änderungen: wurde der Audio-Konfigurationsdatei des Autos hinzugefügt:
- Vom OEM definierter Audiokontext für Autos
- Dynamische Konfigurationen von nicht primären Zonen
Vom OEM definierter Audiokontext für Autos
Flexible Audiokonfiguration in Android aktivieren
14. Auto-Audiodienst ermöglicht,
Sie sind anders als die oben definierten statischen Audiokontexte.
Dieser OEM-definierte Kontext kann in der car_audio_configuration.xml
definiert werden.
Version 3-Datei zu öffnen.
Stattdessen werden die aktuell definierten statischen Audiokontexte verwendet. Die allgemeine Format des vom OEM definierten Audiokontexts für Autos ist unten dargestellt.
Die OEM-Kontexte erfordern jeweils eine name
zusammen mit einer Liste von Audioattributen.
Nutzung, die dem Kontext zugeordnet sind. Im obigen Beispiel sind zwei Kontexte
definiert:
<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>
...
- Der
media
-Kontext enthältAUDIO_USAGE_MEDIA
undAUDIO_USAGE_UNKNOWN
game
-Kontext enthält nurAUDIO_USAGE_GAME
Der Kontext muss oben in car_audio_configuration.xml
definiert werden
-Datei. Wenn die OEM-Kontexte definiert sind, wird die restliche Audiokonfiguration des Autos definiert.
wie zuvor ausgeführt werden kann. Für den Audiokontext eines Autos gelten die folgenden Regeln:
OEM-Kontextdefinitionen sind optional. Der statische Audiokontext ist verwendet werden.
Wiederholen Sie Kontextnamen nicht.
Die Nutzung des Audioattributs sollte nicht mehreren Kontexten zugewiesen werden.
Alle in
AudioAttributes
definierten Audionutzungen sollten zur Erstellung von Kontext zu verstehen.
Genau genommen, die android.audio.policy.configuration.V7_0.AudioUsage
Für den OEM-Audiokontext muss die Audionutzung als String dargestellt werden.
Definition. Künftig werden neuere Verwendungszwecke für Audioattribute dem
Kontext zur Fehlerreduzierung bei der Migration von einem Android-Gerät
in eine andere Version.
Während der vom OEM definierte Kontext eingeführt wurde, um das OEM-Plug-in Audiodienst verwenden, kann er auch ohne den OEM-Plug-in-Dienst verwendet werden. Das Audio Verhalten ähnlich wie beim statischen Audiodienst:
Interaktionen mit Audiofokus: Audioattribut wird verwendet, um die beste von der Audiofokus-Interaktionsmatrix festgelegt wurde. Für Weitere Informationen
Mithilfe des Audioattributs zur Lautstärkeregelung für die Audioausgabe wird die beste Übereinstimmung ermittelt:
- Volumengruppe basierend auf dem vom OEM definierten Kontext.
- Priorität aus der Liste der statischen Volumes, die konfiguriert ist.
Audio-Ducking-Verhalten:
Die Verwendung des Audioattributs für den aktuellen Audiofokus wird für die Zuordnung zu Informationen zur Ausgabe von Audiogeräten gemäß Definition in der Audiokonfiguration des Autos -Datei.
Audioattribut wird verwendet, um den entsprechenden statischen Kontext Duck zuzuordnen. basierend auf der Static Audio-Ducking-Matrix.
Konfigurationen für dynamische Audiozonen
In Android 14 für dynamische Audiozonen wird das Audio-Konfigurationsschema des Autos zum Definieren von Audiobereichen ebenfalls auf Version 3 aktualisiert. Für das neue Schema muss eine Konfiguration eingerichtet werden für jede 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>
Weitere Informationen finden Sie in der Datei Version 3, die in
device/generic/car/emulator/audio/car_audio_configuration.xml
Beginnt in
Unter Android 14 kann die primäre Zone nur eine (1)
Konfiguration. Nicht primäre Zonen können mehrere Konfigurationen haben. Die folgenden
gelten die folgenden Regeln für Audiokonfigurationen von Autos:
Die primäre Audiozone kann nur eine Konfiguration haben.
Nicht primäre Audiozonen können mehrere Konfigurationen haben.
Der Name muss für jede Audiozone und -zonenkonfiguration eindeutig sein.
Innerhalb einer Audiozone können sich die Audiokonfigurationen unterscheiden:
- Die Einrichtung von Volume-Gruppen muss nicht identisch sein.
- Die Zuordnung des Audiokontexts muss nicht identisch sein.
Namen von Audioausgabegeräten sollten in verschiedenen Zonen oder Konfigurationen eindeutig sein. A Gerätenamen dürfen in Audiokonfigurationen oder -bereichen nur einmal vorkommen.
Audiogeräte, die zur selben Lautstärkegruppe gehören, sollten denselben Ton haben Konfigurationen vornehmen.
Für jedes Audio müssen alle Audiokontexte (OEM oder statisch) zugewiesen werden. Konfiguration.
Aufwärtskompatibilität
Auch wenn mit den neuen Versionen von car_audio_configuration.xml
neue
können Sie ältere Dateien auch in neueren Versionen der
AAOS. OEMs, die auf neue Android-Versionen aktualisieren, können die
car_audio_configuration.xml
-Datei.
Um eine neue Funktion zu verwenden, für die neue Informationen im
car_audio_configuration.xml
, die Version muss aktualisiert werden. Es wird versucht,
eine ältere Version einer Datei mit Informationen, die in dieser Version nicht unterstützt werden
gibt IllegalStateException
aus, wenn der Autodienst gestartet wird. Ausnahme
enthält, welche Informationen verwendet werden und
welche Mindestversion erforderlich ist.