Wielostrefowe kierowanie dźwięku

Samochodowa usługa audio korzysta z zasad dotyczących dynamicznego dźwięku Core Audio, aby ułatwić przypadków w samochodach.

  • Oddzielne odtwarzanie dźwięku w przypadku każdego pasażera (tak zwane wielostrefowe odtwarzanie dźwięku), w których każda strefa umożliwia jednoczesne odtwarzanie dźwięku.

  • Konfiguracja dynamicznej strefy dźwięku.

  • Przesyłanie dźwięku w głównej strefie pasażera.

  • Lusterko audio pasażera.

W każdym przypadku użycia system audio w samochodzie używa zasady dynamicznego dźwięku, aby: automatycznie kierować dźwięk do wyznaczonego urządzenia wyjściowego.

Wielostrefowy dźwięk

Wielostrefowy dźwięk umożliwia wielu użytkownikom jednoczesne korzystanie z AAOS. O urządzeń wyjściowych jest powiązanych ze strefą, a w każdej z nich jest przechowywany dźwięk. ostrość i poziom głośności. Pasażerowie mogą słuchać dźwięku, gdy kierowca nasłuchuje innego źródła w strefie głównej (zwykle jest to główna kabina).

Wielostrefowa architektura dźwięku

Architektura samochodowego systemu audio

Rysunek 1. Architektura samochodowego systemu audio.

Samochodowe strefy audio wychwytują wyjścia audio, skoncentrowany dźwięk i inne funkcje ustawieniami dźwięku, którymi możesz zarządzać niezależnie. Na potrzeby routingu: każda strefa jest zdefiniowana jako zestaw urządzeń magistrali wyjścia audio zdefiniowany w konfiguracji zasad dotyczących dźwięku. Urządzenia różnią się w zależności od definicji strefy audio. Na ilustracji 1 urządzenia autobusów 1–5 należą do strefy 0, czyli urządzeń autobusów od 6 do 6 8 należy do strefy 1, a urządzeń autobusowych od 9 do 11 do strefy 2.

Konfiguracja dźwięku w samochodzie

Zwykle urządzenia wyjściowe są przypisane do 1 strefy audio. Każda strefa audio jest zdefiniowane w funkcji car_audio_configuration.xml. Poniższy fragment kodu przedstawia samochód konfiguracji audio zgodnie z rys. 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 to definicja usługi samochodowej zarządzana przez CarOccupantZoneManager Jest używany w samochodach do definiowania mapowania użytkownika w samochodem do konkretnego miejsca. CarOccupantZoneService określa też ze strefy gości na wyświetlacze i inne urządzenia peryferyjne. loguje się na wyświetlaczu. Strefa audio obejmuje:

  • Identyfikator strefy audio i identyfikatora strefy pasażera.

    • Mapuje strefę audio na strefę wypoczynkową (siedzenie, wyświetlacze i inne urządzenia peryferyjne)
    • Zmapuj, który identyfikator użytkownika jest przypisywany do strefy audio po zalogowaniu
  • Lista konfiguracji audio. Każda konfiguracja audio ma zestaw grup woluminów. Każda grupa głośności ma zestaw urządzeń magistrali audio.

    • Po zmianie głośności wszystkie urządzenia audio w grupie są sterowane w tak samo.

    • Każdemu urządzeniu audio jest przypisana lista atrybutów audio. Ten informacji są używane do tworzenia zasad audio miksów o różnych atrybutów audio.

Ta konfiguracja umożliwia kierowanie różnych zastosowań atrybutów audio do urządzenia wyjściowe w każdej strefie. W zależności od przypadku użycia Dźwięki mogą być odtwarzane jednocześnie. Możesz na przykład skonfigurować główny plik kabina (strefa podstawowa), aby odtwarzać dźwięki multimediów na wszystkich głośnikach oprócz dźwięków nawigacji tylko na głośnikach znajdujących się najbliżej kierowcy. Przy równoczesnym odtwarzaniu dźwięku w głównej kabinie nadal słuchasz multimediów, podczas gdy nawigacja jest dostarczana do sterownika.

Proces logowania się jako pasażer w trybie audio w wielu strefach

Poniższy diagram przedstawia proces włączania routingu dźwięku, gdy loguje się pasażer na odpowiednim wyświetlaczu:

obraz

Rysunek 2.

W tej sekwencji dane logowania użytkownika są przekazywane do usługi audio w samochodzie przez w strefie komfortowej obsługi.

  1. Samochodowa usługa audio (w przypadku określonej strefy audio) używa Interfejs API AudioPolicy#removeUserIdDeviceAffinity do usuwania urządzenia użytkownika podobne zainteresowania. Ten interfejs API pobiera identyfikator użytkownika. W tym przypadku poprzednia strefa użytkownika.

  2. Interfejs API AudioPolicy#setUserIdDeviceAffinity przypisuje nowego użytkownika do: strefa, która uwzględnia identyfikator użytkownika i wszystkie urządzenia z danej strefy. konfiguracji.

Konfiguracje stref dynamicznych

W Androidzie 14 konfiguracje stref dynamicznych są wprowadziliśmy, aby umożliwić producentom OEM konfigurowanie różnych zestawów urządzeń dla pasażerów. Ten przypadek użycia pozwala pasażerom na tylnym siedzeniu przełączać się między tylnymi siedzeniami głośnik w zagłówku i urządzenie peryferyjne do słuchawek na tylne siedzenie.

W tym przypadku wymagane są 2 konfiguracje. Po jednym na tylne miejsce zagłówka i urządzenia peryferyjnego do słuchawek. Dźwięk określonego użytkownika jest przekierowywany tylko do jednej konfiguracji naraz.

Konfiguracja strefy dynamicznej
przepływ pracy

Rysunek 3. Procedura konfigurowania strefy dynamicznej.

Ilustracja 3 przedstawia architekturę konfiguracji strefy dynamicznej procesu tworzenia kampanii. Strefa audio 1 zawiera 2 konfiguracje: Config 0 i Config 1, które są powiązane odpowiednio z głośnikiem urządzenia wyjściowego i zagłówkiem.

Po zalogowaniu się użytkownik automatycznie otrzymuje konfigurację domyślną. Gdy użytkownik postanowi zmienić konfigurację, zwykle za pomocą interfejsu systemu, usługa Car Audio uruchamia przełączanie między 2 konfiguracjami. W tym urządzenie wyjściowe przełącza się między głośnikiem Z1 a zagłówkiem Z1.

Fragment kodu poniżej pokazuje konfigurację tej konfiguracji strefy dynamicznej.

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

Menedżer audio w samochodzie ułatwia zarządzanie konfiguracjami dźwięku. udostępnia interfejsy API do zarządzania konfiguracjami:

  • Konfiguracje zapytań dostępne dla strefy.
  • Konfiguracja obecnie ustawiona w zapytaniu dla strefy.
  • Przełącz się na inną konfigurację.

Aplikacja lub usługa systemowego interfejsu użytkownika może za pomocą tych interfejsów API zarządzać konfiguracją strefy dźwięku zgodnie z rysunkiem 4. Interfejs Query API udostępnia te dane pasażerowi. Użytkownik może wybrać inną konfigurację, klikając polecenie pożądaną konfigurację.

Konfiguracja strefy dynamicznej
przepływ pracy

Rysunek 4. Procedura konfigurowania strefy dynamicznej.

Przesyłanie dźwięku od pasażera w głównej strefie

Przesyłanie dźwięku pasażera w głównej strefie to funkcja wprowadzona w Androidzie 14 aby umożliwić pasażerom przesyłanie dźwięku multimedialnego do strefy głównej. W tym dźwięk z multimediów pasażera może być odtwarzany w kabinie głównej kierowca ma pełną kontrolę.

Poniższy rysunek przedstawia uproszczoną wersję architektury podstawowej przesyłanie dźwięku z multimediów dla pasażerów w strefie.

Konfiguracja strefy dynamicznej
przepływ pracy

Rysunek 5. Procedura konfigurowania strefy dynamicznej.

Obraz przedstawia, że wyjście multimediów dla sterownika jest współdzielone pasażera, dzieje się tak tylko wtedy, gdy pasażer jest w trakcie przesyłania do strefy głównej. i trybu uzyskiwania zgody. Zasada dynamicznego dźwięku służy też do zarządzania routingiem audio na urządzeniach sterownika, ale nie są stosowane żadne zmiany do koligacji urządzeń. Dla: pasażer, lista urządzeń wyjściowych zostanie zmieniona w następujący sposób:

  • Wyjście multimediów dla pasażera zostało usunięte z listy urządzeń
  • Wyjście multimediów dla sterownika zostało dodane do listy urządzeń
  • Pozostałe urządzenia wyjściowe stref audio pasażera pozostają na liście urządzeń

Nowa lista urządzeń jest przypisana pasażerowi przez Interfejs API AudioPolicy#setUserIdDeviceAffinity. Parametry przekazywane do interfejsu API to: listę urządzeń i identyfikator użytkownika pasażera. Gdy dźwięk z systemu audio zapytania usługi zasad dotyczące tego, który miks audio ma zostać wybrany na potrzeby ścieżki multimediów media miksu powiązane z pasażerem, strefa została wybrana.

Kluczowym wymogiem przesyłania dźwięku w strefie głównej jest to, aby multimedia w strefie głównej urządzenie wyjściowe będzie odizolowane od innych zastosowań atrybutów audio. W przeciwnym razie w trakcie budowania miksów audio, dodatkowe atrybuty audio. Kiedy system audio wybiera miks, wszystkie dźwięki dołączone do składanka jest wybierana do odtwarzania w głównej kabinie.

Lusterko audio w strefie dla pasażerów

Funkcja odbicia lustrzanego dźwięku umożliwia pasażerom udostępnianie dźwięku. Funkcja odbicia lustrzanego Powiela dane audio w każdej strefie audio, aby wszyscy pasażerowie mogli ich posłuchać. ten sam dźwięk. W tym przypadku aktywny obszar audio jest udostępniany pasażerom. w proces tworzenia odbicia lustrzanego dźwięku.

Kierowanie odbicia lustrzanego dźwięku

Aby włączyć odbicie lustrzane, wymagany jest co najmniej 2 pasażerów. Jako W efekcie konfiguracja audio z tylko 2 strefami audio dla pasażerów do powielania urządzenia wyjściowego. Zgodnie z powyższą definicją dwie równoczesne, lustrzane jak rozpocząć sesję.

Poniższy rysunek przedstawia uproszczony schemat wielostrefowego odbicia lustrzanego dźwięku między 2 pasażerami. Dźwięk obydwu pasażerów jest kierowany do lustra audio. urządzenie, bus_1000. HAL audio duplikuje sygnał do stref źródłowych.

Konfiguracja strefy dynamicznej
przepływ pracy

Rysunek 6. Procedura konfigurowania strefy dynamicznej.

W ten sposób wyznaczanie trasy jest włączone tylko wtedy, gdy pasażerowie są w trybie lustrzanego odbicia lustrzanego. Jeśli nie, odpowiednie urządzenia dla strefy audio zostaną przypisane do pasażerów. Przy pierwszym włączeniu odbicia lustrzanego dla pasażera Interfejs API AudioPolicy#setUserIdDeviceAffinity zmienia routing:

  • Wyjście multimedialne pasażera zostało usunięte z listy urządzeń.
  • Powiel urządzenie wyjściowe dodane do listy urządzeń.
  • Pozostałe urządzenia wyjściowe strefy audio pasażera pozostaną na liście urządzeń.

W przypadku listy urządzeń interfejs API jest wywoływany ze zaktualizowaną listą urządzeń, a następnie identyfikator użytkownika pasażera. Na tej ilustracji znajdziesz schemat sekwencyjny funkcji procesu tworzenia odbicia lustrzanego dźwięku.

Procedura tworzenia odbicia lustrzanego dźwięku

Rysunek 7. Procedura tworzenia odbicia lustrzanego dźwięku.

Na rys. 7 interfejsy API menedżera dźwięku w samochodzie do zarządzania odbiciem lustrzanym dźwięku z usługi systemu multimedialnego. A konkretnie interfejs API do włączania dźwięku powielanie konta Użytkownika 1 i Użytkownika 2, CarAudioManager#enableMirrorForAudioZones.

Usługa dźwięku w samochodzie konfiguruje kierowanie dźwięku dla pasażerów w opisane powyżej. Samochodowa usługa audio wysyła również sygnał do audio HAL, aby skonfigurować i zduplikować dźwięk z urządzenia lustrzanego z 3 różnych stref.

Na obrazie powyżej system audio w samochodzie wysyła mirroring_src=bus_1000;mirroring_dest=bus_10,bus_20

gdzie,

bus_1000 to magistrala źródłowa, a bus_10 i bus_20 to miejsce docelowe autobusy.

Na tym schemacie nie widać sygnału wysyłanego przez AudioManager#setParameters API, który dociera do HAL za pomocą audio. posprzedażna.

Po wyłączeniu lustra dźwięku wysyłany jest następujący sygnał: mirroring_src=bus_1000;mirroring=off Ten sygnał może być używany przez HAL do wyłącz duplikowanie dźwięku, gdy odbicie lustrzane dźwięku nie jest włączone. Aby zdefiniować dźwięk na urządzeniach lustrzanych, plik konfiguracji dźwięku w samochodzie zawiera sekcję mirroringDevices, jak widać na fragmencie kodu poniżej.

Są w nim zdefiniowane 2 urządzenia powielające: bus_1000 i bus_2000. aby 4 pasażerów mogło korzystać z odbicia lustrzanego dźwięku.

<carAudioConfiguration version="3">
   <mirroringDevices>
       <mirroringDevice address="bus_1000"/>
       <mirroringDevice address="bus_2000"/>
   </mirroringDevices>
  <zones>
    ....
  </zones>
</carAudioConfiguration>