Android 10'da car_audio_configuration.xml
, değiştirildi
car_volumes_groups.xml
ve IAudioControl.getBusForContext
. Ses politikası
dosyaları, genellikle tedarikçi firma bölümünde yer alan ses donanımını
yapılandırıldı. Şurada referans verilen tüm cihazlar:
car_audio_configuration.xml
şurada tanımlanmalıdır:
audio_policy_configuration.xml
.
Aşağıdaki Şekil 1'de araç ses sistemi hizmetine genel bir bakış gösterilmektedir araç ses hizmetinin araç ses yapılandırmasını okuduğu mimari dosyasını kullanın.
Şekil 1. Araba ses mimarisine genel bakış.
Araç ses yapılandırma dosyasını vendor\etc\
konumuna yerleştirin veya
Cihazda system\etc\
ve vendor\etc\
bu dosyayı araç ses hizmeti tarafından aranan ilk yer oldu. Araba
ses hizmetleri, sesi belirlemek için car_audio_configuration.xml
değerini okur
yapılandırma.
Araç ses bölgeleri:
- Her ses bölgesi, benzersiz bir ses bölgesi kimliği içerir.
- Her ses bölgesi, bir yolcu bölgesiyle eşleştirilebilir.
Her alt bölgedeki sesli işlemler birbirinden bağımsızdır:
- Ses odağı
- Ses yönlendirme
- Sesi kısma
Araba ses seviyesi grupları:
Bir ses grubu içeren tüm ses cihazları birlikte kontrol edilir elde edebiliyorlar. Tüm cihazlar için ses kazancı yapılandırması aynı olması gerekir.
Ses cihazlarıyla eşlemeye ses bağlamı. Ses içeriği oluşturmak için bunu kullanın ses kullanımlarını bir çıkış cihazıyla eşleştiren bir mix oluşturmanız gerekir.
Tüm sesli bağlamlar bir alt bölge içinde temsil edilmelidir. Bu da bu özellikleri de değiştirebilirsiniz.
Ses bağlamları
AAOS seslerin yapılandırmasını basitleştirmek için benzer kullanımlar gruplandırılmıştır
CarAudioContexts
hedefine. Bu ses bağlamları proje boyunca
Yönlendirme, ses düzeyi grupları, ses odağı ve kısma özelliklerini tanımlamak için CarAudioService
üzerine konuşalım. AAOS'deki statik ses bağlamları aşağıda listelenmiştir.
Bu tabloda, ses bağlamları ve kullanımları arasındaki eşleme açıklanmaktadır. Vurgulanmış satır, yeni bir sistem kullanımı için sağlanır.
CarAudioContext | İlişkilendirilmiş Özellik Kullanımları |
---|---|
MÜZİK | UNKNOWN GAME |
NAVIGATION | ASSISTANCE_NAVIGATION_GUIDANCE |
SES_KOMUTU | ASSISTANT |
ÇAĞRI_ÇIKARMA | NOTIFICATION_RINGTONE |
ARA | VOICE_COMMUNICATION VOICE_COMMUNICATION_SIGNALING |
ALARM | ALARM |
BİLDİRİM | NOTIFICATION NOTIFICATION_* |
SİSTEM_SESİ | ASSISTANCE_SONIFICATION |
ACİL DURUM | EMERGENCY |
GÜVENLİK | SAFETY |
VEHICLE_STATUS | VEHICLE_STATUS |
DUYURU | ANNOUNCEMENT |
AAOS yönlendirmesini etkinleştir
AAOS tabanlı yönlendirmeyi kullanmak için audioUseDynamicRouting
işaretini
true
:
<resources>
<bool name="audioUseDynamicRouting">true</bool>
</resources>
false
, yönlendirme ve CarAudioService
miktarının büyük bir kısmı devre dışı bırakıldığında ve AAOS düştüğünde
varsayılan AudioService
davranışına geri dönelim.
Birincil bölge
Varsayılan olarak tüm sesler birincil bölgeye yönlendirilir. Yalnızca bir birincil alt bölge
Bu değer, yapılandırmada
isPrimary="true"
Birincil alt bölgeye otomatik olarak
Audiomanager.PRIMARY_AUDIO_ZONE
Örnek yapılandırma (sürüm 2)
Örneğin, bir aracın birincil bölge ve arka koltuk olmak üzere iki bölgesi olabilir.
eğlence sistemidir. Bu senaryoda, isabetli metin oluşturmak için
car_audio_configuration.xml
sürüm 2 aşağıdaki gibidir:
<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ı
cihazlar. Bu, HAL'nin farklı ileri işleme süreçleri uygulamasına
ve aracın donanımını kullanarak
çıktıyı her bir cihazda karıştırabilirsiniz.
Cihazlar birkaç ses grubuna göre ayarlanmıştır: medya, navigasyon,
ve sistem sesleri olabilir. Sistem,
useFixedVolume
, ardından her grubun ses düzeyleri HAL'ye iletilir
bu cihazların çıkışına uygulanacak.
Birincil alt bölge için sistem seslerinin diğer seslerden ayrı olmasını öneririz. seslere dokunun. Bu sayede araç seslerinin daha yüksek öncelikli olarak ele alınmasını sağlarsınız. Araç ses hizmeti, araç sesleriyle ilgili bu ayrımları zaten yönetimi açısından önemlidir. Örneğin, acil durum ses odağı isteği, başka bir odaklanma isteğinden daha yüksek önceliğe sahip.
İşinizi basit tutmak için, ikincil bölge örneğindeki tüm ses bağlamları tek bir cihaza ve bir ses grubuna yönlendirilir.
yolcu bölgesi ses yapılandırması
Android 11'de car_audio_configuration.xml
,
audioZoneId
ve occupantZoneId
olmak üzere iki yeni alan var. audioZoneId
kullanabilirsiniz
ses bölgesi yönetimini kontrol edebilirsiniz. Yapılandırmak için occupantZoneId
kullanabilirsiniz
yönlendirmesi gerekir.
Yukarıdaki ses yapılandırması yeniden gözden geçiriliyor, ancak yolcu bölgesi kimliği ve ses bölgesi kimliği eşlemesi, hacim grubu tanımları 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 yapılandırmada birincil alt bölge 0'daki yolcu bölgesiyle bir eşleme tanımlanmaktadır.
ve audioZoneId
1 - occupantZoneId
1. Genel olarak,
yolcu bölgesi ve ses bölgesi yapılandırılabilir. Ancak, eşlemenin
iletişim kurabilirsiniz. Bu iki yeni alanı tanımlayan kurallar aşağıda listelenmiştir.
Birincil alt bölge için
audioZoneId
her zamanPRIMARY_AUDIO_ZONE
kimliğidir. EğerisPrimary="true"
tanımlanmışsaaudioZoneId
gerekli değildir.audioZoneId
veoccupantZoneId
numaraları tekrarlanamaz.audioZoneId
veoccupantZoneId
yalnızca bire bir eşlemeye sahip olabilir.
Android 14 araç ses yapılandırması
Android 14'te AAOS, OEM eklenti hizmetini kullanıma sundu. Böylece, araba tarafından denetlenen ses davranışlarını daha etkin bir şekilde yönetebilirsiniz ses hizmeti var. Yeni eklenti hizmetleriyle birlikte aşağıdaki değişiklikler de araç ses yapılandırma dosyasına eklendi:
- OEM tarafından tanımlanan araç sesi bağlamı
- Birincil olmayan alt bölge dinamik yapılandırmaları
OEM tarafından tanımlanmış araç sesi bağlamı
Android'de esnek ses yapılandırması etkinleştirmek için
14, araç ses hizmeti, ses kullanımlarının
yukarıda tanımlanan statik Ses bağlamlarından farklı şekilde gruplandırılır.
OEM tarafından tanımlanan bu bağlam, car_audio_configuration.xml
içinde tanımlanabilir.
emin olun.
Bunun yerine, o anda tanımlanan statik ses bağlamları kullanılır. Genel OEM tarafından tanımlanan araç ses bağlamının biçimi aşağıda gösterilmiştir.
OEM bağlamlarının her biri, ses özellikleri listesiyle birlikte bir name
gerektirir.
belirli kullanım biçimleridir. Yukarıdaki örnekte iki bağlam
tanımlanı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çeriyorgame
bağlam yalnızcaAUDIO_USAGE_GAME
değerini içerir
Bağlam, car_audio_configuration.xml
öğesinin üst kısmında tanımlanmalıdır
dosyası olarak kaydedebilirsiniz. OEM bağlamları tanımlandığında araç ses yapılandırmasının geri kalanı
devam edebilir. Araç ses bağlamı için aşağıdaki kurallar geçerlidir:
OEM bağlam tanımları isteğe bağlıdır. Statik Ses bağlamı kullanılır.
Bağlam adlarını tekrarlamayın.
Ses özelliği kullanımını birden fazla bağlama atamayın.
AudioAttributes
içinde tanımlanan tüm ses kullanımları, bilmek önemlidir.
Daha net ifade etmek gerekirse, android.audio.policy.configuration.V7_0.AudioUsage
OEM ses bağlamı için ses kullanımının dize temsili kullanılmalıdır
belirler. Gelecekte, yeni ses özelliği kullanımları
Android'den taşıma sırasında hataları azaltmak için en uygun bağlam
sürümünü kullanır.
OEM eklentisini daha da genişletmek için OEM tarafından tanımlanan bağlam sunulsa da ses hizmeti olmadan da OEM eklenti hizmeti olmadan kullanılabilir. Ses statik ses hizmetinin davranışına benzer:
Ses odağı etkileşimleri. Ses özelliği, kullanıcının en iyi ses odağı etkileşim matrisi tarafından ayarlanan eşleme davranışını gösterir. Örneğin, Ses odağı bölümüne bakın.
Ses düzeyi denetimi ses özelliği, en iyi eşleşmeyi belirlemek için kullanılır:
- OEM tarafından tanımlanan bağlama göre hacim grubu.
- Statik birim listesinin önceliği yapılandırıldı.
Sesi kısma davranışı:
Geçerli ses odağının ses özelliği kullanımı, araç ses yapılandırmasında tanımlandığı şekilde ses cihazı bilgilerini çıkışı dosyası olarak kaydedebilirsiniz.
Ses özelliği, karşılık gelen statik bağlamı ördek ile eşlemek için kullanılır. veya statik ses kısma matrisine göre değiştirilir.
Dinamik ses bölgesi yapılandırmaları
Android 14'te dinamik ses bölgelerine yer vermek için ses bölgelerini tanımlayan araç ses yapılandırma şeması Ayrıca sürüm 3'e güncellendi. Yeni şema için bir yapılandırmanın ayarlanması gerekir tıklayın.
<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
Başlamak için kalan süre:
Android 14, birincil alt bölgede yalnızca bir (1) olabilir
yapılandırma. Birincil olmayan alt bölgelerin birden fazla yapılandırması olabilir. Aşağıdakiler
kurallar araç sesi yapılandırmaları için geçerlidir:
Birincil ses bölgesinin yalnızca bir yapılandırması olabilir.
Birincil olmayan ses bölgelerinin birden fazla yapılandırması olabilir.
Her ses bölgesi ve ses bölgesi yapılandırması için ad benzersiz olmalıdır.
Bir ses bölgesinde, ses yapılandırmaları farklılık gösterebilir:
- Birim grubu ayarlarının aynı olması gerekmez.
- Ses bağlamı atamasının aynı olması gerekmez.
Ses çıkış cihazı adları, bölgeler veya yapılandırmalar arasında benzersiz olmalıdır. CEVAP cihaz adı, ses yapılandırmasında veya alt bölgelerde yalnızca bir kez görünmelidir.
Aynı ses grubuna ait ses cihazları aynı sese sahip olmalıdır kazanç yapılandırmaları elde eder.
Tüm ses bağlamları (OEM veya statik) her ses için atanmalıdır yapılandırma.
Yönlendirme uyumluluğu
car_audio_configuration.xml
uygulamasının yeni sürümleri yeni özellikler
özelliklerini kullandığınızda, eski dosyaları
yeni sürümlerinde kullanmaya devam edebilirsiniz.
AAOS'ye dokunun. Android'in yeni sürümlerine güncellenen OEM'ler
car_audio_configuration.xml
dosyası yükleyin.
Şurada bulunan yeni bilgileri gerektiren yeni bir özelliği kullanmak için:
car_audio_configuration.xml
, sürümün güncellenmesi gerekiyor. Kullanmaya çalışılıyor
bir dosyanın, söz konusu dosya sürümünde desteklenmeyen bilgiler içeren eski bir sürümü
Araba servisi başlatıldığında IllegalStateException
hatası verir. İstisna
mesajı, hangi bilgilerin kullanıldığı ve
hangi minimum sürümün gerektiğini
belirtmiştik.