Layanan audio mobil menggunakan kebijakan audio dinamis Core Audio untuk memfasilitasi penggunaan khusus untuk mobil.
Pemutaran audio terpisah untuk setiap penumpang, yang disebut sebagai audio multi-zona, di mana setiap zona memungkinkan pemutaran suara secara serentak.
Konfigurasi zona audio dinamis.
Transmisi audio zona utama penumpang.
Cermin audio penumpang.
Dalam setiap kasus penggunaan, layanan audio mobil menggunakan kebijakan audio dinamis untuk mengarahkan audio secara otomatis ke perangkat {i>output<i} yang ditentukan.
Audio multi-zona
Audio multi-zona memungkinkan banyak pengguna untuk berinteraksi dengan AAOS secara bersamaan. J satu set perangkat output yang dikaitkan dengan satu zona, dan setiap zona menyimpan audio fokus dan level volume. Penumpang dapat mendengarkan audio mereka sementara pengemudi mendengarkan sumber lain di zona utama (biasanya, kabin utama).
Arsitektur audio multi-zona
Gambar 1. Arsitektur layanan audio mobil.
Zona audio mobil adalah abstraksi output audio, fokus audio, dan setelan audio, yang semuanya dapat dikelola secara independen. Untuk tujuan {i>routing<i}, setiap zona didefinisikan sebagai serangkaian perangkat bus output audio seperti yang konfigurasi kebijakan audio. Perangkat dapat berbeda untuk setiap definisi zona audio. Pada Gambar 1, perangkat bus 1 sampai 5 termasuk dalam zona nol, perangkat bus 6 sampai 8 milik zona satu, dan perangkat bus 9 hingga 11 milik zona dua.
Konfigurasi audio mobil
Biasanya, perangkat output ditetapkan ke satu zona audio. Setiap zona audio
ditentukan di car_audio_configuration.xml
. Cuplikan kode berikut menampilkan mobil
konfigurasi audio untuk Gambar 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
adalah definisi layanan mobil yang dikelola oleh
CarOccupantZoneManager
. {i>Tcpdump<i} digunakan di mobil untuk
mendefinisikan pemetaan bagi pengguna di
mobil ke lokasi
kursi tertentu. CarOccupantZoneService
juga menentukan
pemetaan dari zona penumpang ke layar, periferal lain, dan pengguna setelah
saat pengguna masuk ke tampilan. Zona audio memiliki:
ID zona audio dan ID zona penumpang.
- Memetakan zona audio ke zona penumpang (kursi, layar, dan periferal lainnya)
- Petakan ID pengguna yang ditetapkan dengan zona audio saat login
Daftar konfigurasi audio. Setiap konfigurasi audio memiliki serangkaian kelompok volume. Setiap grup volume memiliki sekumpulan perangkat bus audio.
Saat volume diubah, semua perangkat audio dalam grup akan dikontrol di dengan cara yang sama.
Setiap perangkat audio memiliki daftar atribut audio. Ini informasi digunakan untuk menyusun campuran kebijakan audio dengan cara yang berbeda atribut audio yang ditetapkan.
Konfigurasi ini memungkinkan perutean penggunaan atribut audio yang berbeda perangkat {i>output<i} yang berbeda di setiap zona. Tergantung pada kasus penggunaannya, berbagai suara dapat diputar secara serentak. Misalnya, Anda dapat memilih untuk mengonfigurasi kabin (zona utama) untuk memutar suara media di semua speaker, kecuali suara navigasi hanya di speaker terdekat dengan {i>driver<i}. Dengan pemutaran suara secara serentak, kabin utama terus mendengarkan media saat navigasi dikirimkan ke {i>driver<i}.
Alur kerja login penumpang audio multi-zona
Diagram urutan di bawah ini menunjukkan alur untuk mengaktifkan perutean audio saat penumpang login ke tampilan masing-masing:
Gambar 2.
Dalam urutan ini, login pengguna disebarkan ke layanan audio mobil melalui dan layanan zona penumpang.
Layanan audio mobil (untuk zona audio tertentu) menggunakan
AudioPolicy#removeUserIdDeviceAffinity
API untuk menghapus perangkat pengguna afinitas. API ini memerlukan ID pengguna. Dalam hal ini, konfigurasi zona sebelumnya .AudioPolicy#setUserIdDeviceAffinity
API menetapkan pengguna baru ke berdasarkan zona, yang menggunakan ID pengguna dan semua perangkat untuk zona tertentu konfigurasi Anda.
Konfigurasi zona dinamis
Di Android 14, konfigurasi zona dinamis adalah diperkenalkan agar OEM dapat mengonfigurasi berbagai perangkat yang berbeda untuk penumpang. Kasus penggunaan memungkinkan penumpang di kursi belakang untuk berpindah-pindah kursi belakang speaker headrest dan periferal headphone di kursi belakang.
Dalam hal ini, diperlukan dua konfigurasi. Masing-masing satu untuk kursi belakang {i>headrest<i} dan periferal headphone. Audio untuk pengguna tertentu dirutekan hanya ke satu konfigurasi dalam satu waktu.
Gambar 3. Alur kerja konfigurasi zona dinamis.
Gambar 3 ilustrasi arsitektur untuk konfigurasi zona dinamis
alur kerja. Zona audio 1 berisi dua konfigurasi, Config 0
dan Config 1
,
yang masing-masing terkait dengan {i>
speaker <i}dan {i>headrest<i} perangkat {i>output<i}.
Setelah login, pengguna akan otomatis ditetapkan dengan konfigurasi default. Saat pengguna memilih untuk mengubah konfigurasi, biasanya melalui UI sistem, layanan audio mobil menjalankan peralihan di antara dua konfigurasi tersebut. Di sini cara itu, perangkat {i>output<i} dialihkan antara {i>speaker<i} Z1 dan {i>headrest<i} Z1.
Cuplikan kode di bawah menunjukkan penyiapan untuk konfigurasi zona dinamis ini.
<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>
Untuk memfasilitasi pengelolaan konfigurasi audio, pengelola audio mobil mengekspos API untuk mengelola konfigurasi:
- Konfigurasi kueri yang tersedia untuk sebuah zona.
- Mengkueri konfigurasi yang saat ini disetel untuk suatu zona.
- Alihkan ke konfigurasi lain.
Aplikasi atau layanan UI sistem dapat menggunakan API ini untuk mengelola konfigurasi untuk zona audio seperti yang ditampilkan dalam Gambar 4. Query API menampilkan keduanya kepada penumpang. Pengguna dapat memilih konfigurasi yang berbeda dengan mengetuk perintah untuk konfigurasi yang diinginkan.
Gambar 4. Alur kerja konfigurasi zona dinamis.
Transmisi audio penumpang zona utama
Transmisi audio penumpang zona utama adalah fitur yang diperkenalkan di Android 14 untuk memungkinkan penumpang mentransmisikan audio media mereka di zona utama. Di sini audio media penumpang dapat ditransmisikan ke kabin utama sementara {i>driver<i} tetap memegang kendali penuh.
Gambar di bawah menunjukkan versi arsitektur yang disederhanakan untuk transmisi audio media penumpang zona.
Gambar 5. Alur kerja konfigurasi zona dinamis.
Gambar menunjukkan bahwa perangkat output media untuk {i>driver<i} dibagikan dengan penumpang, ini hanya terjadi saat penumpang di transmisi ke zona utama mode. Kebijakan audio dinamis juga digunakan untuk mengelola perutean audio untuk {i>driver<i} tetapi tidak ada perubahan yang diterapkan pada afinitas perangkat untuk {i>driver<i}. Sebagai kepada penumpang, daftar perangkat {i>output<i} diubah sebagai berikut:
- Perangkat output media untuk penumpang dihapus dari daftar perangkat
- Perangkat output media untuk driver ditambahkan ke daftar perangkat
- Perangkat output untuk zona audio penumpang yang tersisa tetap ada di daftar perangkat
Daftar perangkat baru ini diberikan
kepada penumpang oleh
API AudioPolicy#setUserIdDeviceAffinity
. Parameter yang diteruskan ke API
daftar perangkat dan ID pengguna penumpang. Saat audio sistem audio
kueri layanan kebijakan mana mix audio yang akan dipilih untuk trek media
yang terkait dengan penumpang, campuran audio media yang terkait dengan
zona dipilih.
Persyaratan utama untuk transmisi audio zona utama adalah bahwa media zona utama perangkat output diisolasi dari penggunaan atribut audio lainnya. Jika tidak, selama pembuatan campuran audio, atribut audio lainnya ditambahkan ke video tersebut. Saat pemilihan campuran dilakukan oleh sistem audio, semua suara yang terpasang pada campuran dipilih untuk diputar di kabin utama.
Cermin audio zona penumpang
Fitur cermin audio memungkinkan penumpang berbagi audio. Fitur cermin membuat duplikat data audio di setiap zona audio sehingga semua penumpang dapat mendengarkannya audio yang sama. Dalam hal ini, fokus audio dibagikan kepada penumpang yang terlibat dalam pencerminan audio.
Pemilihan rute cerminan audio
Diperlukan minimal dua penumpang untuk mengaktifkan pencerminan audio. Sebagai seorang menghasilkan konfigurasi audio dengan hanya dua zona audio penumpang akan memerlukan satu perangkat output cermin. Dengan definisi di atas, dua pencerminan serentak dapat dimulai;
Gambar di bawah menampilkan diagram yang disederhanakan untuk pencerminan audio multi-zona
di antara dua penumpang. Audio dari kedua penumpang diarahkan ke cermin audio
perangkat, bus_1000
. Audio HAL menduplikasi sinyal ke zona sumber.
Gambar 6. Alur kerja konfigurasi zona dinamis.
Perutean ini diaktifkan hanya saat penumpang dalam mode pencerminan. Jika
tidak, perangkat terkait untuk zona audio akan diberikan kepada penumpang.
Saat pencerminan pertama kali diaktifkan untuk penumpang,
AudioPolicy#setUserIdDeviceAffinity
API mengubah pemilihan rute:
- Perangkat output media untuk penumpang dihapus dari daftar perangkat.
- Cerminkan perangkat output yang ditambahkan ke daftar perangkat.
- Perangkat output untuk zona audio penumpang lainnya tetap ada di daftar perangkat.
Dengan daftar perangkat, API akan dipanggil dengan daftar perangkat yang diperbarui dan ID pengguna milik penumpang. Gambar berikut menampilkan diagram urutan pencerminan audio.
Gambar 7. Alur kerja pencerminan audio.
Di Gambar 7, API pengelola audio mobil untuk mengelola pencerminan audio adalah
yang dipanggil dari {i>Media System Service<i}. Secara khusus, API untuk mengaktifkan audio
untuk Pengguna 1 dan Pengguna 2, CarAudioManager#enableMirrorForAudioZones
.
Layanan audio mobil mengonfigurasi perutean audio untuk penumpang pengguna sebagai yang dijelaskan di atas. Layanan audio mobil juga mengirimkan sinyal ke HAL audio untuk mengonfigurasi dan menduplikasi audio dari perangkat cermin ke serta region mendatang dan zonanya.
Pada gambar di atas, layanan audio mobil mengirimkan
mirroring_src=bus_1000;mirroring_dest=bus_10,bus_20
dalam hal ini,
bus_1000
adalah bus sumber dan bus_10
dan bus_20
adalah tujuannya
bus.
Sinyal yang tidak ditampilkan dalam diagram urutan
adalah sinyal yang dikirim melalui
AudioManager#setParameters
API, yang mencapai HAL melalui audio
layanan.
Setelah menonaktifkan cermin audio, sinyal berikut ini dikirim,
mirroring_src=bus_1000;mirroring=off
. Sinyal ini dapat
digunakan oleh HAL untuk
menonaktifkan duplikasi audio saat pencerminan audio tidak diaktifkan. Untuk menentukan audio
perangkat pencerminan, file konfigurasi audio mobil berisi bagian yang bernama
mirroringDevices
, seperti yang ditunjukkan pada cuplikan di bawah.
Dalam cuplikan ini, dua perangkat pencerminan ditentukan, bus_1000
dan bus_2000
,
sehingga empat penumpang dapat
menggunakan pencerminan audio.
<carAudioConfiguration version="3">
<mirroringDevices>
<mirroringDevice address="bus_1000"/>
<mirroringDevice address="bus_2000"/>
</mirroringDevices>
<zones>
....
</zones>
</carAudioConfiguration>