Android 10'da car_audio_configuration.xml
, car_volumes_groups.xml
ve IAudioControl.getBusForContext
değiştirildi. Genellikle satıcı bölümünde bulunan ses politikası dosyaları, kartın ses donanım yapılandırmasını temsil eder. car_audio_configuration.xml
başvurulan tüm cihazlar audio_policy_configuration.xml
adresinde tanımlanmalıdır.
Aşağıdaki Şekil 1, araç ses hizmetinin cihaz için ses ayarlamak için araba ses yapılandırma dosyasını okuduğu otomobil ses hizmeti mimarisinin üst düzey bir genel bakışını göstermektedir.
Şekil 1. Otomobil ses mimarisine genel bakış.
Araç Audio Configuration dosyasını cihaza vendor\etc\
veya system\etc\
ye yerleştirin, vendor\etc\
, araba ses hizmeti tarafından dosyayı aranan ilk yer. Ses yapılandırmasını belirlemek için araba ses hizmetleri car_audio_configuration.xml
okur.
Araba Ses Bölgeleri:
- Her ses bölgesi benzersiz bir ses bölgesi kimliği içerir.
- Her ses bölgesi bir yolcu bölgesine eşlenebilir.
Her bölgedeki ses eylemleri birbirinden bağımsızdır:
- Ses odağı
- Sesli yönlendirme
- Sesin kısılması
Araba Hacim Grupları:
Birim grubu içeren tüm ses aygıtları aynı kazanç değişiklikleriyle birlikte kontrol edilir. Bir gruptaki tüm cihazlar için ses kazancı yapılandırması aynı olmalıdır.
Ses cihazları eşlemeye ses bağlamı. Ses kullanımlarını bir çıkış cihazıyla eşleştiren bir ses karışımı oluşturmak için bunu kullanın.
Tüm ses bağlamları bir bölgede temsil edilmelidir. Bu, ses yönlendirmesinin tüm ses özniteliği kullanımları için doğru bir şekilde kurulmasını sağlar.
Ses bağlamları
AAOS sesinin yapılandırmasını basitleştirmek için benzer kullanımlar CarAudioContexts
olarak gruplandırılmıştır. Bu ses bağlamları, yönlendirme, cilt grupları, ses odağı ve duding yönetimini tanımlamak için CarAudioService
boyunca kullanılır. AAOS'taki statik ses bağlamları aşağıda listelenmiştir.
Bu tablo, ses bağlamları ve kullanımlar arasındaki eşlemeyi açıklar. Yeni bir sistem kullanımı için vurgulanan satırlar sağlanır.
Caraudiocontext | İlişkili öznitelik |
---|---|
MÜZİK | UNKNOWN GAME |
NAVİGASYON | ASSISTANCE_NAVIGATION_GUIDANCE |
SES KOMUTU | ASSISTANT |
Call_ring | NOTIFICATION_RINGTONE |
ARAMA | VOICE_COMMUNICATION VOICE_COMMUNICATION_SIGNALING |
ALARM | ALARM |
BİLDİRİ | NOTIFICATION NOTIFICATION_* |
System_sound | ASSISTANCE_SONIFICATION |
ACİL DURUM | EMERGENCY |
EMNİYET | SAFETY |
Araç_status | VEHICLE_STATUS |
DUYURU | ANNOUNCEMENT |
AAOS Yönlendirmesini Etkinleştir
AAOS tabanlı yönlendirmeyi kullanmak için audioUseDynamicRouting
bayrağını true
olarak ayarlamanız gerekir:
<resources>
<bool name="audioUseDynamicRouting">true</bool>
</resources>
false
, yönlendirme ve CarAudioService
çoğu devre dışı bırakıldığında ve AAOS, AudioService
varsayılan davranışına geri döner.
Birincil bölge
Varsayılan olarak, tüm sesler birincil bölgeye yönlendirilir. isPrimary="true"
özniteliği tarafından yapılandırmada belirtilen yalnızca bir birincil bölge vardır. Birincil bölgeye otomatik olarak Audiomanager.PRIMARY_AUDIO_ZONE
atanır.
Örnek Yapılandırma (Sürüm 2)
Örneğin, bir aracın iki bölge, birincil bölge ve arka koltuk eğlence sistemi olabilir. Bu senaryoda, olası bir car_audio_configuration.xml
sürüm 2'yi aşağıdaki gibi tasarlayabilirsiniz:
<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>
Bu örnekte, birincil bölge bazı ses bağlamlarını farklı cihazlara ayırır. Bu, HAL'in farklı işlem sonrası efektleri uygulamasını ve aracın donanımını kullanarak her cihazdaki çıkışı karıştırmasını sağlar. Cihazlar birkaç cilt grubunda düzenlenmiştir: medya, navigasyon, çağrılar, alarmlar ve sistem sesleri. Sistem useFixedVolume
şekilde yapılandırılmışsa, her grubun ses düzeyi düzeyleri bu aygıtların çıkışına uygulanmak üzere HAL'ye iletilir.
Birincil bölge için sistem seslerinin diğer seslerden ayrı olmasını öneririz. Bu, araç seslerinin daha yüksek bir öncelikle muamele edilmesini sağlar. Araba ses hizmeti, odak ve duding yönetimi açısından araç sesleri için bu ayrımları zaten yapıyor. Örneğin, acil ses odağı isteği, başka bir odak talebinden daha yüksek önceliğe sahiptir.
İşleri basit tutmak için, ikincil bölge örneğinde tüm ses bağlamları tek bir cihaza ve bir cilt grubuna yönlendirilir.
Yolcu Bölgesi Ses Yapılandırması
Android 11'de car_audio_configuration.xml
iki yeni alan tanıttı: audioZoneId
ve occupantZoneId
. Ses bölgesi yönetimini kontrol etmek için audioZoneId
kullanabilirsiniz. Kullanıcı kimliğine dayalı yönlendirmeyi yapılandırmak için occupantZoneId
kullanabilirsiniz.
Yukarıdaki ses yapılandırmasını yeniden ziyaret etme, ancak yeni alanı Yolcu Bölgesi Kimliği ve Ses Bölgesi Kimliği eşlemesi için kullanma, cilt grubu tanımları olmadan yeni yapılandırma aşağıdaki gibi ayarlanabilir.
<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>
Yukarıdaki konfigürasyon, birincil bölge için bir haritalama, yolcu bölgesi 0 ve audioZoneId
1'e occupantZoneId
1'e bir eşleme tanımlar. Genel olarak, yolcu bölgesi ve ses bölgesi arasındaki herhangi bir eşleme yapılandırılabilir. Ancak, eşleme bire bir olmalıdır. İki yeni alanı tanımlayan kurallar aşağıda listelenmiştir.
Birincil bölge için
audioZoneId
her zamanPRIMARY_AUDIO_ZONE
kimliğidir.isPrimary="true"
tanımlanmışsaaudioZoneId
gerekli değildir.audioZoneId
veoccupantZoneId
sayıları tekrarlanamaz.audioZoneId
veoccupantZoneId
sadece bire bir eşlemeye sahip olabilir.
Android 14 araç ses yapılandırması
Android 14'te AAOS, otomobil ses hizmeti tarafından denetlenen ses davranışını daha aktif olarak yönetmenizi sağlayan OEM eklentisi hizmetini tanıttı. Yeni eklenti hizmetleri ile birlikte, Araç Ses Yapılandırma dosyasına aşağıdaki değişiklikler eklenir:
- OEM tanımlı araç ses bağlamı
- Birincil olmayan bölge dinamik yapılandırmaları
OEM tanımlı araç ses bağlamı
Esnek bir ses yapılandırmasını etkinleştirmek için Android 14'te araç ses hizmeti, ses kullanımlarının yukarıda tanımlanan statik Ses bağlamlarından farklı şekilde gruplandırılmasına olanak tanır. Bu OEM tanımlı içerik car_audio_configuration.xml
sürüm 3 dosyasında tanımlanabilir.
Bunun yerine halihazırda tanımlanmış statik ses bağlamları kullanılır. OEM tanımlı araba ses bağlamının genel formatı aşağıda gösterilmiştir.
OEM bağlamlarının her biri, bağlama atanan ses öznitelikleri kullanımı listesi ile birlikte bir name
gerektirir. Yukarıdaki örnekte, iki bağlam tanımlanmıştır:
<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>
...
-
media
BağlamıAUDIO_USAGE_MEDIA
veAUDIO_USAGE_UNKNOWN
içerir -
game
Bağlamı YalnızcaAUDIO_USAGE_GAME
içerir
Bağlam, car_audio_configuration.xml
dosyasının üstünde tanımlanmalıdır. OEM bağlamları tanımlandığında, araba ses konfigürasyonunun geri kalanı eskisi gibi ilerleyebilir. Araç ses bağlamı için aşağıdaki kurallar geçerlidir:
OEM bağlam tanımları isteğe bağlıdır. Bunun yerine statik ses bağlamı kullanılır.
Bağlam adlarını tekrarlamayın.
Birden fazla bağlamda ses özniteliği kullanımı atamayın.
AudioAttributes
tanımlanan tüm ses kullanımları, bağlamı oluşturmak için kullanılmalıdır.
Kesinlikle konuşursak, android.audio.policy.configuration.V7_0.AudioUsage
Ses Kullanımının Dize Dizesi, OEM ses bağlamı tanımı için kullanılmalıdır. Gelecekte, bir Android sürümünden diğerine geçerken hatayı azaltmak için daha yeni ses özniteliği kullanımları en uygun bağlamda atanacaktır.
OEM eklentisi ses hizmetini daha da genişletmek için OEM tanımlı bağlam tanıtılmış olsa da, yine de OEM eklentisi hizmeti olmadan kullanılabilir. Ses davranışına statik ses hizmetine benzemektedir:
Ses odağı etkileşimleri. Ses özelliği, ses odak etkileşim matrisi tarafından ayarlandığı gibi en iyi eşleşen davranışı belirlemek için kullanılır. Ayrıntılar için bkz. Ses odağı .
En iyi eşleşmeyi belirlemek için ses düzeyi kontrolü ses özelliği kullanılır:
- OEM tanımlı bağlama dayalı birim grubu.
- Yapılandırılan statik birim listesinden öncelik.
Sesi kısma davranışı:
Geçerli ses odağı için ses özniteliği kullanımı, araç ses yapılandırma dosyasında tanımlandığı gibi çıkış ses cihazı bilgileriyle eşlemek için kullanılır.
Ses özniteliği, statik ses azaltma matrisine dayalı olarak karşılık gelen statik bağlamı ördekle eşlemek için kullanılır.
Dinamik ses bölgeleri yapılandırmaları
Android 14'te, dinamik ses bölgeleri yapılandırmasına uyum sağlamak için ses bölgelerini tanımlamaya yönelik araç ses yapılandırma şeması da sürüm 3'e güncellendi. Yeni şema, her bölge için bir yapılandırmanın ayarlanmasını gerektiriyor.
<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>
Daha fazla bilgi edinmek için, device/generic/car/emulator/audio/car_audio_configuration.xml
dosyasında tanımlanan sürüm 3 dosyasına bakın. Android 14'ten itibaren birincil alt bölgenin yalnızca bir (1) yapılandırması olabilir. Primer olmayan bölgelerde birden fazla konfigürasyon olabilir. Araç ses yapılandırmaları için aşağıdaki kurallar geçerlidir:
Birincil ses bölgesi yalnızca bir konfigürasyona sahip olabilir.
Birincil olmayan ses bölgeleri birden fazla konfigürasyona sahip olabilir.
Ad, her ses bölgesi ve ses bölgesi yapılandırması için benzersiz olmalıdır.
Bir ses bölgesi içinde ses konfigürasyonları farklı olabilir:
- Birim grupları kurulumunun aynı olması gerekmez.
- Ses bağlamı atamasının aynı olması gerekmez.
Ses çıkış cihazı adları, bölgeler veya konfigürasyonlar arasında benzersiz olmalıdır. Bir cihaz adı, ses konfigürasyonunda veya bölgelerde yalnızca bir kez görünmelidir.
Aynı ses düzeyi grubuna ait ses cihazları aynı ses kazanımı yapılandırmalarına sahip olmalıdır.
Her ses yapılandırması için tüm ses bağlamları (OEM veya statik) atanmalıdır.
İleriye dönük uyumluluk
car_audio_configuration.xml
dosyasının yeni sürümleri her güncellemede yeni özellikler sunsa da, eski dosyaları AAOS'un yeni sürümlerinde kullanmaya devam edebilirsiniz. Android'in yeni sürümlerine güncelleme yapan OEM'ler car_audio_configuration.xml
dosyasını yeniden kullanabilir.
car_audio_configuration.xml
dosyasında yer alan yeni bilgileri gerektiren yeni bir özelliği kullanmak için sürümün güncellenmesi gerekir. Bir dosyanın eski bir sürümünü, o dosya sürümünde desteklenmeyen bilgilerle kullanmaya çalışmak, araç hizmeti başlatıldığında bir IllegalStateException
oluşturur. İstisna mesajı, hangi bilgilerin kullanıldığı ve hangi minimum sürümün gerekli olduğu ile ilgili bilgileri içerir.