Der Audiodienst im Auto nutzt die Richtlinie „Core Audio Dynamic Audio“, um die Nutzung zu erleichtern Koffer in Autos.
Separate Audiowiedergabe für jeden Passagier, auch als Mehrzonen-Audio bezeichnet. in dem jeder Bereich die gleichzeitige Wiedergabe von Ton ermöglicht.
Konfiguration der dynamischen Audiozone.
Audiostreams in der Primärzone des Passagiers.
Audiospiegel des Beifahrers.
In jedem Anwendungsfall nutzt der Audiodienst des Autos die Richtlinie für dynamische Audioanzeigen, um Audio automatisch an das dafür vorgesehene Ausgabegerät weiterleitet.
Mehrzonen-Audio
Dank der Funktion „Mehrzonen-Audio“ können mehrere Nutzer gleichzeitig mit AAOS interagieren. A Gruppe von Ausgabegeräten ist einer Zone zugeordnet und jede Zone erhält den Ton Fokus und Lautstärke. Beifahrer können sich die Audiowiedergaben anhören, während der Fahrer hört eine andere Quelle in der primären Zone (normalerweise in der Hauptkabine) zu.
Audioarchitektur mit mehreren Zonen
Abbildung 1: Architektur des Audiodiensts im Auto
Auto-Audiozonen sind eine Abstraktion von Audioausgaben, Audiofokus und anderen Audioeinstellungen, die alle einzeln verwaltet werden können. Für das Routing Jede Zone ist als eine Reihe von Audioausgabe-Busgeräten definiert, wie in der Konfiguration der Audiorichtlinie. Die Geräte unterscheiden sich je nach Audiozone. In Abbildung 1 gehören die Busgeräte 1 bis 5 zu Zone 0, die Busgeräte 6 bis 5 8 gehören zu Zone 1 und die Busgeräte 9 bis 11 gehören zu Zone 2.
Audiokonfiguration im Auto
In der Regel sind Ausgabegeräte einer Audiozone zugewiesen. Jede Audiozone ist
definiert in car_audio_configuration.xml
. Das folgende Code-Snippet zeigt ein Auto,
Audiokonfiguration für Abbildung 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
ist eine Autodienstdefinition, die verwaltet wird
CarOccupantZoneManager
. Er wird in Autos verwendet, um eine Zuordnung für Nutzende in
zu einem bestimmten Sitzplatz. CarOccupantZoneService
definiert auch
die Zuordnung von Insassenbereich zu Displays, anderen Peripheriegeräten und dem Nutzer, sobald die
sich der Nutzer auf einem
Display an. Ein Audiobereich hat:
Eine Audiozonen-ID und eine Insassen-ID.
- Ordnet den Audiobereich den Insassenbereich zu (Sitz, Displays und andere Peripheriegeräte)
- Zuordnung, welche User-ID bei der Anmeldung einem Audiobereich zugewiesen wird
Eine Liste der Audiokonfigurationen. Jede Audiokonfiguration umfasst eine Reihe von Volume-Gruppen. Jede Lautstärkegruppe umfasst eine Reihe von Audio-Busgeräten.
Wenn die Lautstärke geändert wird, werden alle Audiogeräte einer Gruppe in auf die gleiche Weise.
Jedem Audiogerät ist eine Liste mit Audioattributen zugewiesen. Dieses wird die Audiorichtlinie mit unterschiedlichen zugewiesenen Audioattributen.
Durch diese Konfiguration können verschiedene Verwendungen von Audioattributen weitergeleitet werden an verschiedene Ausgabegeräte in jeder Zone haben. Je nach Anwendungsfall gleichzeitig abgespielt werden können. Sie können z. B. festlegen, dass die Haupt- Kabine (primäre Zone), um Medientöne auf allen Lautsprechern außer Navigationstöne wiederzugeben nur auf den Lautsprechern, die sich in der Nähe des Treibers befinden. Bei gleichzeitiger Wiedergabe von Ton Die Hauptkabine hört weiterhin Medien zu, während die Navigation an die .
Workflow für die Anmeldung von Passagieren mit mehreren Zonen
Das folgende Sequenzdiagramm zeigt den Ablauf zum Aktivieren des Audioroutings, wenn ein Fahrgastprotokolle auf dem jeweiligen Display:
Abbildung 2:
In dieser Abfolge wird die Nutzeranmeldung über die Dienst für Insassenbereich.
Der Audiodienst des Autos (für einen bestimmten Audiobereich) verwendet die
AudioPolicy#removeUserIdDeviceAffinity
API zum Entfernen des Nutzergeräts Zielgruppen mit gemeinsamen Interessen. Diese API verwendet eine Nutzer-ID. In diesem Fall ist der Wert Nutzer.Die
AudioPolicy#setUserIdDeviceAffinity
API weist den neuen Nutzer einer Zone, die die User-ID und alle Geräte für eine bestimmte Zone aufnimmt Konfiguration.
Konfigurationen für dynamische Zonen
In Android 14 werden dynamische Zonenkonfigurationen eingeführt, damit OEMs verschiedene Geräte für Fahrgäste konfigurieren können. Bei diesem Anwendungsfall können Insassen auf dem Rücksitz zwischen einem Rücksitz und einem Rücksitz wechseln. Lautsprecher mit Kopfstütze und Peripheriegeräten für den Rücksitz.
In diesem Fall sind zwei Konfigurationen erforderlich. Jeweils eine für den Rücksitz Kopfstütze und Peripheriegeräte. Audio für einen bestimmten Nutzer wird weitergeleitet nur auf jeweils eine Konfiguration anwenden.
Abbildung 3: Workflow für die Konfiguration dynamischer Zonen
Abbildung 3 zeigt die Architektur der dynamischen Zonenkonfiguration.
zu optimieren. Audiozone 1 enthält zwei Konfigurationen, Config 0
und Config 1
.
die dem Lautsprecher bzw. der Kopfstütze des Ausgabegeräts zugeordnet sind.
Bei der Anmeldung wird dem Nutzer automatisch die Standardkonfiguration zugewiesen. Wenn sich der Nutzer dafür entscheidet, Konfigurationen zu ändern, in der Regel über eine System-UI, Auto-Audiodienst den Wechsel zwischen den beiden Konfigurationen durchführt. In dieser wird das Ausgabegerät zwischen dem Z1-Lautsprecher und der Z1-Kopfstütze umgeschaltet.
Das folgende Code-Snippet zeigt die Einrichtung für diese dynamische Zonenkonfiguration.
<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>
Um die Verwaltung der Audiokonfigurationen zu erleichtern, nutzt der Audio-Manager des Autos stellt APIs zur Verwaltung der Konfigurationen zur Verfügung:
- Abfragekonfigurationen, die für eine Zone verfügbar sind.
- Die aktuell festgelegte Konfiguration einer Zone wird abgefragt.
- Wechseln Sie zu einer anderen Konfiguration.
Eine System-UI-Anwendung oder ein Dienst kann mithilfe dieser API die Konfiguration für die wie in Abbildung 4 dargestellt. Die Query API stellt dem Fahrgast beide Daten zur Verfügung. Der Nutzer kann eine andere Konfiguration auswählen, indem er auf einen Befehl für die gewünschte Konfiguration.
Abbildung 4: Workflow für die Konfiguration dynamischer Zonen
Audiostream für Passagiere in der primären Zone
Das Audiostreaming für Passagiere in der primären Zone ist eine Funktion, die mit Android 14 eingeführt wurde, Fahrgästen die Möglichkeit geben, ihre Medien im Hauptbereich zu streamen. In dieser Art und Weise, wie der Medienton des Beifahrers in die Hauptkabine übertragen wird, während der behält der Fahrer die volle Kontrolle.
Die folgende Abbildung zeigt eine vereinfachte Version der Architektur für die primäre Medien-Audio der Zone „Passagier“ gestreamt.
Abbildung 5: Workflow für die Konfiguration dynamischer Zonen
Das Bild zeigt, dass das Medienausgabegerät für den Fahrer mit dem Bei einem Passagier passiert dies nur, wenn sich der Passagier in der primären Zone befindet. . Mit der Richtlinie "Dynamische Audio" wird auch das Audiorouting für die Es werden jedoch keine Änderungen an den Geräteaffinitäten des Fahrers vorgenommen. Für ändern sich die Liste der Ausgabegeräte wie folgt:
- Das Medienausgabegerät für den Beifahrer wird aus der Geräteliste entfernt
- Das Medienausgabegerät für den Treiber wird der Geräteliste hinzugefügt
- Verbleibende Ausgabegeräte für Audiozonen bei Passagieren bleiben auf der Geräteliste
Diese neue Geräteliste wird dem Fahrgast vom
AudioPolicy#setUserIdDeviceAffinity
-API. Folgende Parameter werden an die API übergeben:
Geräteliste und Nutzer-ID des Passagiers Wenn der Ton des Audiosystems
Der Richtliniendienst fragt nach, welcher Audiomix für einen Medientrack ausgewählt werden soll.
die mit dem Passagier verknüpft sind, der mit dem primären
Zone ausgewählt ist.
Eine wichtige Voraussetzung für das Audiostreaming in der primären Zone ist, Das Ausgabegerät muss von anderen Verwendungen von Audioattributen getrennt sein. Andernfalls werden weitere Audioattribute hinzugefügt. Bei der Mix-Auswahl durch das Audiosystem werden alle Töne wird der Mix für die Wiedergabe in der Hauptkabine ausgewählt.
Audiospiegel im Passagierbereich
Mit der Audiospiegelfunktion können Fahrgäste Audioinhalte teilen. Spiegelfunktion Duplizierte Audiodaten in jedem Bereich, sodass alle Beifahrer denselben Ton. In diesem Fall wird der Audiofokus mit den Fahrgästen geteilt. die an der Audiospiegelung beteiligt sind.
Routing des Audiospiegels
Zum Aktivieren der Audiospiegelung sind mindestens zwei Passagiere erforderlich. Als würde eine Audiokonfiguration mit nur zwei Audiozonen für Beifahrer ein Spiegelausgabegerät. Bei der obigen Definition sind zwei gleichzeitige Spiegelungen Sitzungen gestartet werden können.
Die folgende Abbildung zeigt ein vereinfachtes Diagramm für die Mehrzonen-Audiospiegelung
zwischen zwei Passagieren. Audio von beiden Fahrgästen wird an einen Audiospiegel geleitet
Gerät, bus_1000
. Der Audio-HAL dupliziert das Signal in den Quellzonen.
Abbildung 6: Workflow für die Konfiguration dynamischer Zonen
Dieses Routing ist nur aktiviert, wenn sich die Fahrgäste im Spiegelungsmodus befinden. Wenn
nicht, werden den Fahrgästen die entsprechenden Geräte für den Audiobereich zugewiesen.
Wenn die Spiegelung für einen Passagier zum ersten Mal aktiviert wird,
Die AudioPolicy#setUserIdDeviceAffinity
API ändert das Routing:
- Das Medienausgabegerät für den Beifahrer wird aus der Geräteliste entfernt.
- Das Spiegelausgabegerät wurde der Geräteliste hinzugefügt.
- Die verbleibenden Ausgabegeräte für die Audiozone des Beifahrers verbleiben auf der Geräteliste.
Mit der Geräteliste wird die API mit der aktualisierten Liste der Geräte und Nutzer-ID des Passagiers. Die folgende Abbildung zeigt ein Sequenzdiagramm des zur Audiospiegelung.
Abbildung 7: Workflow für die Audiospiegelung.
In Abbildung 7 sind die APIs des Audio-Managers des Autos zum Verwalten der Audiospiegelung
aus dem Media System Service aufgerufen wird. Die API zum Aktivieren von Audioanzeigen
Spiegelung für Nutzer 1 und Nutzer 2, CarAudioManager#enableMirrorForAudioZones
.
Der Audiodienst des Autos konfiguriert das Audiorouting für Fahrgäste so beschrieben. Der Audiodienst des Autos sendet auch ein Signal an den Audio-HAL, Audio vom Spiegelgerät konfigurieren und auf das entsprechende Zonen.
Im Bild oben sendet der Audiodienst des Autos
mirroring_src=bus_1000;mirroring_dest=bus_10,bus_20
wo
bus_1000
ist der Quellbus und bus_10
und bus_20
sind das Ziel
Busse.
Nicht im Sequenzdiagramm ist das Signal zu sehen, das über die
AudioManager#setParameters
API, die den HAL über das Audio erreicht
Service.
Beim Deaktivieren des Audiospiegels wird das folgende Signal gesendet:
mirroring_src=bus_1000;mirroring=off
Dieses Signal kann vom HAL verwendet werden,
Audioduplizierung deaktivieren, wenn die Audiospiegelung nicht aktiviert ist Audio definieren
Geräte spiegeln, enthält die Konfigurationsdatei für die Audiofunktion des Autos einen Abschnitt namens
mirroringDevices
, wie im Snippet unten gezeigt.
In diesem Snippet werden zwei Spiegelungsgeräte definiert, bus_1000
und bus_2000
.
sodass vier Passagiere die Audiospiegelung nutzen können.
<carAudioConfiguration version="3">
<mirroringDevices>
<mirroringDevice address="bus_1000"/>
<mirroringDevice address="bus_2000"/>
</mirroringDevices>
<zones>
....
</zones>
</carAudioConfiguration>