Audio-Routing in mehreren Zonen

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

Architektur von Audiodiensten für Autos

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:

Bild

Abbildung 2:

In dieser Abfolge wird die Nutzeranmeldung über die Dienst für Insassenbereich.

  1. 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.

  2. 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.

Konfiguration der dynamischen Zone
Workflow

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.

Konfiguration der dynamischen Zone
Workflow

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.

Konfiguration der dynamischen Zone
Workflow

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.

Konfiguration der dynamischen Zone
Workflow

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.

Workflow für die 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>