Layanan audio mobil menggunakan kebijakan audio dinamis Core Audio untuk memfasilitasi kasus penggunaan di mobil.
Pemutaran audio terpisah untuk setiap penumpang, yang disebut sebagai audio multi-zona, dengan setiap zona memungkinkan pemutaran suara secara serentak.
Konfigurasi zona audio dinamis.
Transmisi audio zona utama penumpang.
Duplikasi audio penumpang.
Dalam setiap kasus penggunaan, layanan audio mobil menggunakan kebijakan audio dinamis untuk merutekan audio secara otomatis ke perangkat output yang ditetapkan.
Audio multizona
Audio multi-zona memungkinkan beberapa pengguna berinteraksi dengan AAOS secara bersamaan. Serangkaian perangkat output dikaitkan dengan zona, dan setiap zona mempertahankan fokus dan tingkat volume audio. Penumpang dapat mendengarkan audio mereka saat 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 dari output audio, fokus audio, dan setelan audio lainnya, yang semuanya dapat dikelola secara independen. Untuk tujuan pemilihan rute, setiap zona ditentukan sebagai kumpulan perangkat bus output audio seperti yang diatur dalam konfigurasi kebijakan audio. Perangkat berbeda untuk setiap definisi zona audio. Pada Gambar 1, perangkat bus 1 hingga 5 termasuk dalam zona nol, perangkat bus 6 hingga 8 termasuk dalam zona satu, dan perangkat bus 9 hingga 11 termasuk dalam 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 menunjukkan konfigurasi
audio mobil 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
. Ini digunakan di mobil untuk menentukan pemetaan bagi pengguna di
mobil ke lokasi kursi tertentu. CarOccupantZoneService
juga menentukan
pemetaan dari zona penghuni ke layar, periferal lainnya, dan pengguna setelah
pengguna login ke layar. Zona audio memiliki:
ID zona audio dan ID zona penumpang.
- Memetakan zona audio ke zona penumpang (kursi, layar, dan periferal lainnya)
- Memetakan ID pengguna mana yang ditetapkan dengan zona audio saat login
Daftar konfigurasi audio. Setiap konfigurasi audio memiliki serangkaian grup volume. Setiap grup volume memiliki kumpulan perangkat bus audio.
Saat volume diubah, semua perangkat audio dalam grup akan dikontrol dengan cara yang sama.
Setiap perangkat audio diberi daftar atribut audio. Informasi ini digunakan untuk membuat gabungan kebijakan audio dengan atribut audio yang ditetapkan secara berbeda.
Konfigurasi ini memungkinkan penggunaan atribut audio yang berbeda untuk dirutekan ke perangkat output yang berbeda di setiap zona. Bergantung pada kasus penggunaan, suara yang berbeda dapat diputar secara serentak. Misalnya, Anda dapat memilih untuk mengonfigurasi kabin utama (zona utama) untuk memutar suara media di semua speaker, tetapi suara navigasi hanya di speaker yang terdekat dengan pengemudi. Dengan pemutaran suara serentak, kabin utama akan terus mendengarkan media saat navigasi dikirim ke pengemudi.
Alur kerja login penumpang audio multi-zona
Diagram urutan di bawah menunjukkan alur untuk mengaktifkan pemilihan rute audio saat penumpang login ke layar masing-masing:
Gambar 2.
Dalam urutan ini, login pengguna disebarkan ke layanan audio mobil melalui layanan zona penumpang.
Layanan audio mobil (untuk zona audio tertentu) menggunakan
AudioPolicy#removeUserIdDeviceAffinity
API untuk menghapus afinitas perangkat pengguna. API ini menggunakan ID pengguna. Dalam hal ini, pengguna zona sebelumnya.AudioPolicy#setUserIdDeviceAffinity
API menetapkan pengguna baru ke zona, yang menggunakan ID pengguna dan semua perangkat untuk konfigurasi zona tertentu.
Konfigurasi zona dinamis
Di Android 14, konfigurasi zona dinamis diperkenalkan untuk memungkinkan OEM mengonfigurasi berbagai kumpulan perangkat untuk penumpang. Kasus penggunaan ini memungkinkan penumpang di kursi belakang untuk beralih antara speaker headrest kursi belakang dan periferal headphone kursi belakang.
Dalam hal ini, dua konfigurasi diperlukan. Satu untuk headrest kursi belakang dan periferal headphone. Audio untuk pengguna tertentu dirutekan hanya ke satu konfigurasi pada satu waktu.
Gambar 3. Alur kerja konfigurasi zona dinamis.
Gambar 3 mengilustrasikan arsitektur untuk alur kerja konfigurasi zona dinamis. Zona audio 1 berisi dua konfigurasi, Config 0
dan Config 1
,
yang masing-masing dikaitkan dengan speaker perangkat output dan headrest.
Setelah login, pengguna akan otomatis diberi konfigurasi default. Saat pengguna memilih untuk mengubah konfigurasi, biasanya melalui UI sistem, layanan audio mobil akan menjalankan pengalihan antara dua konfigurasi. Dengan cara ini, perangkat output akan dialihkan antara speaker Z1 dan headrest 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 zona.
- Membuat kueri konfigurasi yang saat ini ditetapkan untuk zona.
- Beralih ke konfigurasi yang berbeda.
Aplikasi atau layanan UI sistem dapat menggunakan API ini untuk mengelola konfigurasi untuk zona audio seperti yang ditunjukkan pada Gambar 4. Query API mengekspos 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. Dengan cara ini, audio media penumpang dapat ditransmisikan ke kabin utama sementara pengemudi tetap memiliki kontrol penuh.
Gambar di bawah menunjukkan versi sederhana arsitektur untuk transmisi audio media penumpang zona utama.
Gambar 5. Alur kerja konfigurasi zona dinamis.
Gambar menunjukkan bahwa perangkat output media untuk pengemudi dibagikan kepada penumpang, dan hal ini hanya terjadi saat penumpang berada dalam mode transmisi ke zona utama. Kebijakan audio dinamis juga digunakan untuk mengelola pemilihan rute audio bagi driver, tetapi tidak ada perubahan yang diterapkan pada afinitas perangkat untuk driver. Untuk penumpang, daftar perangkat output diubah sebagai berikut:
- Perangkat output media untuk penumpang dihapus dari daftar perangkat
- Perangkat output media untuk driver ditambahkan ke daftar perangkat
- Perangkat output yang tersisa untuk zona audio penumpang tetap berada di daftar perangkat
Daftar perangkat baru ini ditetapkan untuk penumpang oleh
AudioPolicy#setUserIdDeviceAffinity
API. Parameter yang diteruskan ke API adalah
daftar perangkat dan ID pengguna penumpang. Saat layanan kebijakan
audio sistem audio mengkueri campuran audio mana yang akan dipilih untuk trek media
yang terkait dengan penumpang, campuran audio media yang terkait dengan zona
utama akan dipilih.
Persyaratan utama untuk transmisi audio zona utama adalah perangkat output media zona utama harus diisolasi dari penggunaan atribut audio lainnya. Jika tidak, selama konstruksi campuran audio, atribut audio lainnya akan ditambahkan ke campuran. Saat pemilihan campuran dilakukan oleh sistem audio, semua suara yang disertakan ke campuran akan dipilih untuk diputar di kabin utama.
Duplikasi audio zona penumpang
Fitur pencerminan audio memungkinkan penumpang berbagi audio. Fitur pencerminan menduplikasi data audio di setiap zona audio sehingga semua penumpang dapat mendengarkan audio yang sama. Dalam hal ini, fokus audio dibagikan kepada penumpang yang terlibat dalam pencerminan audio.
Pemilihan rute transmisi audio
Diperlukan minimal dua penumpang untuk mengaktifkan pencerminan audio. Akibatnya, konfigurasi audio dengan hanya dua zona audio penumpang akan memerlukan satu perangkat output cermin. Dengan definisi di atas, dua sesi pencerminan serentak dapat dimulai.
Gambar di bawah menunjukkan diagram sederhana untuk pencerminan audio multi-zona
antara dua penumpang. Audio dari kedua penumpang diarahkan ke perangkat mirror
audio, bus_1000
. Audio HAL menduplikasi sinyal ke zona sumber.
Gambar 6. Alur kerja konfigurasi zona dinamis.
Pemilihan rute ini hanya diaktifkan saat penumpang berada dalam mode pencerminan. Jika
tidak, perangkat yang sesuai untuk zona audio akan ditetapkan kepada penumpang.
Saat pencerminan pertama kali diaktifkan untuk penumpang, AudioPolicy#setUserIdDeviceAffinity
API akan mengubah pemilihan rute:
- Perangkat output media untuk penumpang dihapus dari daftar perangkat.
- Perangkat output pencerminan ditambahkan ke daftar perangkat.
- Perangkat output yang tersisa untuk zona audio penumpang tetap ada dalam daftar perangkat.
Dengan daftar perangkat, API dipanggil dengan daftar perangkat yang diperbarui dan ID pengguna penumpang. Gambar berikut memberikan diagram urutan alur kerja pencerminan audio.
Gambar 7. Alur kerja pencerminan audio.
Pada Gambar 7, API pengelola audio mobil untuk mengelola pencerminan audio
dipanggil dari Layanan Sistem Media. Secara khusus, API untuk mengaktifkan pencerminan
audio bagi Pengguna 1 dan Pengguna 2, CarAudioManager#enableMirrorForAudioZones
.
Layanan audio mobil mengonfigurasi pemilihan rute audio untuk penumpang pengguna seperti yang dijelaskan di atas. Layanan audio mobil juga mengirimkan sinyal ke HAL audio untuk mengonfigurasi dan menduplikasi audio dari perangkat mirror ke zona yang sesuai.
Pada gambar di atas, layanan audio mobil mengirim
mirroring_src=bus_1000;mirroring_dest=bus_10,bus_20
di mana,
bus_1000
adalah bus sumber, sedangkan bus_10
dan bus_20
adalah bus
tujuan.
Sinyal yang dikirim melalui
AudioManager#setParameters
API, yang menjangkau HAL melalui layanan
audio, tidak ditampilkan dalam diagram urutan.
Setelah menonaktifkan pencerminan audio, sinyal berikut akan dikirim,
mirroring_src=bus_1000;mirroring=off
. Sinyal ini dapat digunakan oleh HAL untuk
menonaktifkan duplikasi audio saat pencerminan audio tidak diaktifkan. Untuk menentukan perangkat
pencerminan audio, file konfigurasi audio mobil berisi bagian 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>