Di Android 10, car_audio_configuration.xml
diganti
car_volumes_groups.xml
dan IAudioControl.getBusForContext
. Kebijakan audio
file, biasanya terdapat dalam partisi vendor, mewakili hardware audio
konfigurasi board. Semua perangkat yang dirujuk di
car_audio_configuration.xml
harus ditetapkan di
audio_policy_configuration.xml
.
Gambar 1 di bawah mengilustrasikan ringkasan tingkat tinggi tentang layanan audio mobil arsitektur di mana layanan audio mobil membaca konfigurasi audio mobil untuk menyiapkan audio bagi perangkat.
Gambar 1. Ringkasan arsitektur audio mobil.
Tempatkan file konfigurasi audio mobil di vendor\etc\
atau
system\etc\
di perangkat, dengan vendor\etc\
menjadi tempat pertama yang menelusuri
file oleh layanan audio mobil. Mobil
layanan audio membacakan car_audio_configuration.xml
untuk menentukan audio
konfigurasi Anda.
Zona audio mobil:
- Setiap zona audio berisi ID zona audio yang unik.
- Setiap zona audio dapat dipetakan ke zona penumpang.
Tindakan audio di setiap zona tidak saling bergantung:
- Fokus audio
- Pemilihan rute audio
- Pengecilan volume audio
Grup volume mobil:
Semua perangkat audio yang berisi grup volume dikontrol bersama dengan perubahan penguatan yang sama. Konfigurasi penguatan audio untuk semua perangkat dalam satu kelompok seharusnya sama.
Pemetaan konteks audio ke perangkat audio. Gunakan ini untuk membuat audio yang memetakan penggunaan audio ke perangkat {i>output<i}.
Semua konteks audio harus ditampilkan dalam satu zona. Hal ini memungkinkan agar perutean audio disiapkan secara akurat untuk semua penggunaan atribut audio.
Konteks audio
Untuk menyederhanakan konfigurasi audio AAOS, penggunaan serupa telah dikelompokkan
ke dalam CarAudioContexts
. Konteks audio ini digunakan dalam
CarAudioService
untuk menentukan pemilihan rute, grup volume, fokus audio, dan pengecilan volume
otomatisasi pengelolaan biaya. Konteks audio statis di AAOS tercantum di bawah ini.
Tabel ini menjelaskan pemetaan antara konteks audio dan penggunaan. Disoroti baris disediakan untuk penggunaan sistem baru.
Konteks MobilAudio | AttributeUsages Terkait |
---|---|
MUSIK | UNKNOWN GAME |
NAVIGASI | ASSISTANCE_NAVIGATION_GUIDANCE |
VOICE_COMMAND | ASSISTANT |
CINCIN_PANGGILAN | NOTIFICATION_RINGTONE |
TELEPON | VOICE_COMMUNICATION VOICE_COMMUNICATION_SIGNALING |
ALARM | ALARM |
NOTIFIKASI | NOTIFICATION NOTIFICATION_* |
SUARA_SISTEM | ASSISTANCE_SONIFICATION |
DARURAT | EMERGENCY |
KEAMANAN | SAFETY |
STATUS_VEHICLE | VEHICLE_STATUS |
PENGUMUMAN | ANNOUNCEMENT |
Mengaktifkan pemilihan rute AAOS
Untuk menggunakan perutean berbasis AAOS, Anda harus menetapkan tanda audioUseDynamicRouting
ke
true
:
<resources>
<bool name="audioUseDynamicRouting">true</bool>
</resources>
Ketika false
, pemilihan rute dan sebagian besar CarAudioService
, dinonaktifkan dan AAOS jatuh
kembali ke perilaku default AudioService
.
Zona utama
Secara default, semua audio dirutekan ke zona utama. Hanya satu zona utama
ada, yang ditunjukkan dalam konfigurasi dengan atribut
isPrimary="true"
. Zona utama secara otomatis ditetapkan ke
Audiomanager.PRIMARY_AUDIO_ZONE
.
Contoh konfigurasi (versi 2)
Misalnya, kendaraan mungkin memiliki dua zona, zona utama dan kursi belakang
hiburan. Dalam skenario ini, Anda dapat merancang
car_audio_configuration.xml
versi 2 sebagai berikut:
<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>
Di contoh ini, zona utama memisahkan
beberapa konteks audio ke
perangkat yang berbeda. Hal ini memungkinkan HAL menerapkan proses pascapemrosesan yang berbeda
efek dan untuk mencampur {i>output<i} pada setiap perangkat
dengan menggunakan perangkat keras kendaraan.
Perangkat telah disusun menjadi beberapa
grup volume: media, navigasi,
panggilan, alarm, dan suara sistem. Jika sistem dikonfigurasi untuk
useFixedVolume
, maka level volume untuk setiap grup diteruskan ke HAL
untuk diterapkan ke output perangkat ini.
Untuk zona utama, sebaiknya suara sistem terpisah dari suara lainnya audio. Dengan begitu, suara kendaraan dapat ditangani dengan prioritas yang lebih tinggi. Layanan audio mobil sudah membuat perbedaan untuk suara kendaraan di dalam hal fokus dan manajemen pengecilan volume. Misalnya, fokus suara darurat memiliki prioritas lebih tinggi daripada permintaan fokus lainnya.
Agar lebih sederhana, dalam contoh zona sekunder, semua konteks audio diarahkan ke satu perangkat dan satu grup volume.
Konfigurasi audio zona penumpang
Di Android 11, car_audio_configuration.xml
memperkenalkan
dua kolom baru, audioZoneId
dan occupantZoneId
. Anda dapat menggunakan audioZoneId
untuk mengontrol pengelolaan zona audio. Anda dapat menggunakan occupantZoneId
untuk mengonfigurasi
perutean berdasarkan ID pengguna.
Meninjau kembali konfigurasi audio di atas, tetapi memanfaatkan bidang baru untuk pemetaan ID zona penumpang dan ID zona audio, konfigurasi baru tanpa definisi grup volume dapat disiapkan sebagai berikut.
<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>
Konfigurasi di atas menentukan pemetaan untuk zona utama ke zona penghuni 0
dan audioZoneId
1 hingga occupantZoneId
1. Secara umum, setiap pemetaan antara
zona penumpang dan zona audio dapat dikonfigurasi. Namun, pemetaan harus
satu ke satu. Aturan yang menentukan dua kolom baru tersebut tercantum di bawah.
audioZoneId
untuk zona utama selaluPRIMARY_AUDIO_ZONE
id. JikaisPrimary="true"
sudah ditentukan,audioZoneId
tidak diperlukan.Nomor
audioZoneId
danoccupantZoneId
tidak dapat diulang.audioZoneId
danoccupantZoneId
hanya dapat memiliki pemetaan one-to-one.
Konfigurasi audio mobil Android 14
Di Android 14, AAOS memperkenalkan layanan plugin OEM, yang memungkinkan Anda secara lebih aktif mengelola perilaku audio yang diawasi oleh mobil layanan audio. Bersama dengan layanan plugin yang baru, perubahan berikut adalah ditambahkan ke file konfigurasi audio mobil:
- Konteks audio mobil yang ditentukan OEM
- Konfigurasi dinamis non-zona utama
Konteks audio mobil yang ditentukan OEM
Untuk mengaktifkan konfigurasi audio yang fleksibel, di Android
14, layanan audio mobil memungkinkan penggunaan audio
dikelompokkan secara berbeda dengan Konteks audio statis yang dijelaskan di atas.
Konteks yang ditentukan OEM ini dapat ditentukan di car_audio_configuration.xml
file versi 3.
Sebagai gantinya, konteks audio statis yang saat ini ditentukan akan digunakan. Pertanyaan umum format konteks audio mobil yang ditentukan OEM ditampilkan di bawah ini.
Setiap konteks OEM memerlukan name
beserta daftar atribut audio
yang ditetapkan ke konteks. Pada contoh di atas, dua konteks adalah
terdefinisi:
<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>
...
- Konteks
media
berisiAUDIO_USAGE_MEDIA
danAUDIO_USAGE_UNKNOWN
- Konteks
game
hanyaAUDIO_USAGE_GAME
berisi
Konteks harus ditentukan di bagian atas car_audio_configuration.xml
. Setelah konteks OEM ditentukan, konfigurasi audio mobil lainnya
dapat melanjutkan seperti sebelumnya. Aturan berikut berlaku untuk konteks audio mobil:
Definisi konteks OEM bersifat opsional. Konteks audio statis adalah digunakan sebagai gantinya.
Jangan ulangi nama konteks.
Jangan tetapkan penggunaan atribut audio ke beberapa konteks.
Semua penggunaan audio yang ditentukan dalam
AudioAttributes
harus digunakan untuk membuat konteks.
Sebenarnya, android.audio.policy.configuration.V7_0.AudioUsage
representasi string dari penggunaan audio harus digunakan untuk konteks audio OEM
definisi. Di masa mendatang, penggunaan atribut audio yang lebih baru akan ditetapkan ke
konteks yang paling tepat untuk mengurangi error saat bermigrasi dari satu Android
ke versi lain.
Sementara konteks yang ditentukan OEM diperkenalkan untuk lebih memperluas plugin OEM layanan audio, audio tersebut tetap dapat digunakan tanpa layanan plugin OEM. Audio terlihat menyerupai layanan audio statis:
Interaksi fokus audio. Atribut audio digunakan untuk menentukan konten perilaku yang sesuai seperti yang disiapkan oleh matriks interaksi fokus audio. Sebagai Lihat detail Fokus audio.
Atribut audio kontrol volume audio digunakan untuk menentukan kecocokan terbaik:
- Grup volume berdasarkan konteks yang ditentukan OEM.
- Prioritas dari daftar volume statis yang dikonfigurasi.
Perilaku pengecilan volume audio:
Penggunaan atribut audio untuk fokus audio saat ini digunakan untuk memetakan ke output informasi perangkat audio seperti yang ditentukan dalam konfigurasi audio mobil .
Atribut audio digunakan untuk memetakan konteks statis terkait ke bebek, berdasarkan matriks pengecilan volume audio statis.
Konfigurasi zona audio dinamis
Di Android 14, untuk mengakomodasi zona audio dinamis , skema konfigurasi audio mobil untuk menentukan zona audio juga diperbarui ke versi 3. Skema baru memerlukan konfigurasi penyiapan untuk setiap zona.
<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>
Untuk mempelajari lebih lanjut, lihat file versi 3 yang didefinisikan di
device/generic/car/emulator/audio/car_audio_configuration.xml
. Dimulai dalam
Android 14, zona utama hanya dapat memiliki satu (1)
konfigurasi Anda. Zona non-utama dapat memiliki beberapa konfigurasi. Hal berikut
aturan yang berlaku untuk konfigurasi audio mobil:
Zona audio utama hanya dapat memiliki satu konfigurasi.
Zona audio non-utama dapat memiliki beberapa konfigurasi.
Nama harus unik untuk setiap zona audio dan konfigurasi zona audio.
Dalam zona audio, konfigurasi audio mungkin berbeda:
- Penyiapan grup volume tidak harus sama.
- Penetapan konteks audio tidak harus sama.
Nama perangkat output audio harus unik di seluruh zona atau konfigurasi. J nama perangkat seharusnya hanya muncul sekali dalam konfigurasi atau zona audio.
Perangkat audio yang termasuk dalam grup volume yang sama harus memiliki audio yang sama mendapatkan konfigurasi.
Semua konteks audio (OEM atau statis) harus ditetapkan untuk setiap audio konfigurasi Anda.
Kompatibilitas dengan versi baru
Meskipun versi baru car_audio_configuration.xml
memperkenalkan
di setiap pembaruan, Anda masih dapat
menggunakan file lama dalam
AAOS. OEM yang melakukan update ke versi baru Android dapat menggunakan kembali
File car_audio_configuration.xml
.
Untuk menggunakan fitur baru yang memerlukan informasi baru yang terdapat dalam
car_audio_configuration.xml
, versinya harus diupdate. Mencoba menggunakan
versi file yang lebih lama dengan informasi yang tidak didukung dalam versi file tersebut
menampilkan IllegalStateException
saat servis mobil dimulai. Pengecualian
berisi informasi yang relevan tentang
informasi mana yang digunakan dan
versi minimum yang diperlukan.