W Androidzie 10 zastąpiono car_audio_configuration.xml
car_volumes_groups.xml
i IAudioControl.getBusForContext
. Zasady dotyczące reklam audio
pliki, zazwyczaj zawarte na partycji dostawcy, reprezentują sprzęt audio,
i konfiguracji płytki. Wszystkie urządzenia wymienione w
Pole car_audio_configuration.xml
musi być zdefiniowane w:
audio_policy_configuration.xml
Rysunek 1 poniżej przedstawia ogólny przegląd usługi audio w samochodzie architektura, w której system audio w samochodzie odczytuje konfigurację dźwięku z samochodu aby skonfigurować dźwięk na urządzeniu.
Rysunek 1. Omówienie architektury systemu audio w samochodzie.
Umieść plik konfiguracji dźwięku w samochodzie w folderze vendor\etc\
lub
system\etc\
na urządzeniu, vendor\etc\
będący pierwszym miejscem wyszukiwania pliku przez system audio w samochodzie. Samochód
usługi audio odczytują plik car_audio_configuration.xml
, aby określić dźwięk
konfiguracji.
Samochodowe strefy audio:
- Każda strefa audio zawiera unikalny identyfikator strefy audio.
- Każdą strefę audio można przypisać do strefy gościa.
Działania związane z dźwiękiem w każdej strefie są od siebie niezależne:
- Aktywność audio
- Kierowanie dźwięku
- Wyciszanie tła
Grupy głośności samochodu:
Wszystkie urządzenia audio zawierające grupę głośności są sterowane razem przy takich samych zmianach wzmocnienia. Konfiguracja wzmocnienia audio dla wszystkich urządzeń powinny być takie same.
Mapowanie kontekstu dźwięku na urządzenia audio Użyj go do utworzenia pliku audio. miksu, który mapuje użycie dźwięku na urządzenie wyjściowe.
Wszystkie konteksty dźwiękowe powinny znajdować się w strefie. Dzięki temu aby zapewnić dokładne ustawienia routingu dźwięku na potrzeby wszystkich atrybutów audio.
Konteksty dźwiękowe
Aby uprościć konfigurację audio AAOS, pogrupowaliśmy podobne przypadki użycia
na CarAudioContexts
. Te konteksty dźwiękowe są używane w całym
CarAudioService
, aby zdefiniować kierowanie, grupy głośności, aktywność audio i wyciszanie tła.
i zarządzania nimi. Poniżej znajdziesz statyczne konteksty audio w systemie AAOS.
W tej tabeli opisano mapowanie między kontekstami audio a zastosowaniami. Zaznaczone Liczba wierszy jest podana dla nowego użycia systemu.
Samochodowy kontekst audio | Powiązane użycie atrybutów |
---|---|
MUZYCZNA | UNKNOWN GAME |
NAWIGACJA | ASSISTANCE_NAVIGATION_GUIDANCE |
POLECENIE | ASSISTANT |
DŹWIĘK_POŁĄCZENIA | NOTIFICATION_RINGTONE |
ZADZWOŃ | VOICE_COMMUNICATION VOICE_COMMUNICATION_SIGNALING |
ALARM | ALARM |
POWIADOMIENIE | NOTIFICATION NOTIFICATION_* |
SYSTEM_DŹWIĘKOWY | ASSISTANCE_SONIFICATION |
ALARM | EMERGENCY |
BEZPIECZEŃSTWO | SAFETY |
STAN POJAZDU | VEHICLE_STATUS |
POWIADOMIENIE | ANNOUNCEMENT |
Włącz routing AAOS
Aby używać routingu w oparciu o AAOS, musisz ustawić flagę audioUseDynamicRouting
na
true
:
<resources>
<bool name="audioUseDynamicRouting">true</bool>
</resources>
Gdy funkcja false
, routing i znaczna część obszaru CarAudioService
są wyłączone, a system AAOS upada
z powrotem do domyślnego działania AudioService
.
Główna strefa
Domyślnie cały dźwięk jest kierowany do strefy głównej. Tylko 1 strefa główna
istnieje, co jest określone w konfiguracji przez atrybut
isPrimary="true"
Strefa podstawowa jest automatycznie przypisywana
Audiomanager.PRIMARY_AUDIO_ZONE
Przykładowa konfiguracja (wersja 2)
Na przykład pojazd może mieć 2 strefy: główną i tylne.
system multimedialny. W tym scenariuszu możesz zaprojektować możliwe
car_audio_configuration.xml
w wersji 2:
<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>
W tym przykładzie strefa główna rozdziela niektóre konteksty audio na:
na różnych urządzeniach. Dzięki temu HAL może stosować różne
i miksować dźwięk na każdym z urządzeń za pomocą wyposażenia pojazdu.
Urządzenia są podzielone na kilka grup głośności: multimedia, nawigacja,
połączeń, alarmów i dźwięków systemu. Jeśli system jest skonfigurowany do
useFixedVolume
, poziomy głośności każdej grupy zostaną przekazane do HAL
aby zastosować na wyjściu tych urządzeń.
W strefie głównej zalecamy, aby dźwięki systemowe były oddzielone od innych dźwięki. Dzięki temu dźwiękom pojazdu może być traktowane z wyższym priorytetem. Usługa audio w samochodzie już wprowadza te rozróżnienia w przypadku dźwięków pojazdu i skupiania się na nich. Na przykład jako punkt skupienia dźwięku awaryjnego ma wyższy priorytet niż inne żądanie koncentracji.
Dla uproszczenia w strefie dodatkowej w przykładzie wszystkie konteksty audio są kierowane do 1 urządzenia i 1 grupy głośności.
Konfiguracja dźwięku w strefie osób
W Androidzie 11 car_audio_configuration.xml
wprowadziliśmy
2 nowe pola: audioZoneId
i occupantZoneId
. Możesz użyć usługi audioZoneId
aby sterować zarządzaniem strefami dźwiękowymi. Za pomocą usługi occupantZoneId
możesz skonfigurować
w zależności od identyfikatora użytkownika.
Wracam do powyższej konfiguracji audio, ale korzystam z nowego pola identyfikatora strefy użytkownika i identyfikatora strefy audio, nowej konfiguracji bez definicje grup woluminów możesz skonfigurować w ten sposób.
<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>
Powyższa konfiguracja definiuje mapowanie strefy głównej na strefę 0 użytkowników.
i audioZoneId
1 do occupantZoneId
1. Ogólnie każde mapowanie między
strefy użytkowników i dźwięku można skonfigurować. Mapowanie musi jednak być
jeden do jednego. Poniżej znajdziesz reguły definiujące 2 nowe pola.
audioZoneId
w strefie głównej ma zawsze identyfikatorPRIMARY_AUDIO_ZONE
. Jeśli Zdefiniowano atrybutisPrimary="true"
, a poleaudioZoneId
nie jest potrzebne.Numery
audioZoneId
ioccupantZoneId
nie mogą się powtarzać.audioZoneId
ioccupantZoneId
mogą mieć tylko mapowanie 1:1.
Konfiguracja dźwięku w samochodzie z Androidem 14
W Androidzie 14 w systemie AAOS wprowadzono usługę wtyczek OEM, co pozwala na bardziej aktywne zarządzanie dźwiękiem w samochodzie. usłudze audio. Oprócz nowych usług wtyczek wprowadziliśmy następujące zmiany dodany do pliku konfiguracji dźwięku w samochodzie:
- Kontekst audio w samochodzie zdefiniowany przez OEM
- Konfiguracje dynamiczne strefy innej niż podstawowa
Kontekst audio w samochodzie zdefiniowany przez OEM
Aby włączyć elastyczną konfigurację dźwięku, na urządzeniu z Androidem
14, samochodowe usługi audio pozwalają na wykorzystanie muzyki
są pogrupowane inaczej niż statyczne konteksty audio zdefiniowane powyżej.
Ten kontekst zdefiniowany przez OEM można określić tutaj: car_audio_configuration.xml
wersji 3.
Zamiast niego używane są aktualnie zdefiniowane statyczne konteksty dźwiękowe. Ogólne formatu kontekstu audio w samochodzie zdefiniowanego przez OEM znajdziesz poniżej.
Każdy kontekst OEM wymaga atrybutu name
wraz z listą atrybutów audio
powiązane z kontekstem. W przykładzie powyżej 2 konteksty to
zdefiniowano:
<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>
...
- Kontekst
media
zawieraAUDIO_USAGE_MEDIA
iAUDIO_USAGE_UNKNOWN
- Kontekst
game
zawiera tylkoAUDIO_USAGE_GAME
Kontekst musi być zdefiniowany na górze car_audio_configuration.xml
. Po zdefiniowaniu kontekstu OEM reszta konfiguracji audio w samochodzie
może przebiegać tak jak wcześniej. W przypadku odtwarzania dźwięku w samochodzie obowiązują te zasady:
Definicje kontekstowe OEM są opcjonalne. Statyczny Kontekst audio to .
Nie powtarzaj nazw kontekstów.
Nie przypisuj wykorzystania atrybutów audio do wielu kontekstów.
Wszystkie przypadki użycia plików audio określone w zasadzie
AudioAttributes
powinny być wykorzystywane do tworzenia w kontekście.
Ściśle mówiąc, android.audio.policy.configuration.V7_0.AudioUsage
W kontekście audio OEM musi być używana reprezentacja ciągu audio w formie ciągu znaków
definicji. W przyszłości nowsze przypadki użycia atrybutów audio będą przypisywane do
kontekst, który pozwoli ograniczyć błędy
przy migracji z jednego Androida.
do innej wersji.
Wprowadzono kontekst zdefiniowany przez OEM, aby rozszerzyć zakres wtyczki OEM. audio, można jej nadal używać bez usługi wtyczki OEM. Dźwięk podobne do działania usługi statycznej dźwięku:
Interakcje z dźwiękiem. Atrybut audio służy do określania najlepszej dopasowania skonfigurowanego przez macierz interakcji skupienia się na dźwięku. Dla: Więcej informacji znajdziesz w sekcji Aktywność związana z dźwiękiem.
Do określenia najlepszego dopasowania służy atrybut sterowania głośnością dźwięku:
- Grupa woluminów na podstawie kontekstu zdefiniowanego przez OEM.
- Priorytet ze statycznej listy woluminów.
Wyciszanie tła:
Wykorzystanie atrybutów audio dla bieżącego elementu audio jest używane do zmapowania wyjściowego urządzenia audio zdefiniowanego w konfiguracji systemu audio w samochodzie; .
Atrybut audio służy do zmapowania odpowiedniego statycznego kontekstu do kaczki. na podstawie statycznej matrycy wyciszania tła.
Konfiguracje dynamicznych stref audio
W Androidzie 14 w celu dostosowania dynamicznych stref dźwięku schemat konfiguracji dźwięku w samochodzie do definiowania stref audio to Zaktualizowano też do wersji 3. Nowy schemat wymaga skonfigurowania dla każdej strefy.
<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>
Więcej informacji znajdziesz w pliku wersji 3 zdefiniowanego w
device/generic/car/emulator/audio/car_audio_configuration.xml
Zaczyna się za
Android 14, strefa główna może mieć tylko 1 (1)
konfiguracji. Strefy inne niż podstawowa mogą mieć wiele konfiguracji. Poniżej
w przypadku konfiguracji audio w samochodzie:
Główna strefa audio może mieć tylko 1 konfigurację.
Inne strefy audio mogą mieć wiele konfiguracji.
Nazwa musi być unikalna dla każdej konfiguracji strefy audio i strefy audio.
W strefie audio konfiguracje audio mogą się różnić:
- Konfiguracja grup woluminów nie musi być taka sama.
- Przypisanie kontekstu audio nie musi być takie samo.
Nazwy urządzeń wyjściowych audio powinny być unikalne w różnych strefach i konfiguracjach. O powinna się pojawić tylko raz w konfiguracji lub strefach audio.
Urządzenia audio należące do tej samej grupy głośności powinny mieć ten sam dźwięk konfiguracji wzmocnienia.
Wszystkie konteksty dźwiękowe (OEM lub statyczne) muszą być przypisane do każdego dźwięku konfiguracji.
Zgodność z wyprzedzeniem
Chociaż nowe wersje car_audio_configuration.xml
wprowadzają nowe
w każdej aktualizacji możesz używać starszych plików w nowszych wersjach
AAOS. OEM, którzy aktualizują się do nowych wersji Androida, mogą ponownie używać
car_audio_configuration.xml
.
Aby skorzystać z nowej funkcji, która wymaga nowych informacji zawartych w
car_audio_configuration.xml
, należy zaktualizować wersję. Próbuję użyć
starsza wersja pliku z informacjami, które nie są w niej obsługiwane
zwraca IllegalStateException
po uruchomieniu usługi samochodowej. Wyjątek
wiadomość zawiera istotne informacje na temat tego, które dane są wykorzystywane
która wersja minimalna jest wymagana.