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, di mana setiap zona memungkinkan pemutaran suara secara bersamaan.
Konfigurasi zona audio dinamis.
Siaran 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 ditentukan.
Audio multizona
Audio multi-zona memungkinkan beberapa pengguna berinteraksi dengan AAOS secara bersamaan. Serangkaian perangkat output dikaitkan dengan zona, dan setiap zona mempertahankan fokus audio dan tingkat 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 lainnya, yang semuanya dapat dikelola secara terpisah. Untuk tujuan perutean, setiap zona ditentukan sebagai sekumpulan perangkat bus output audio 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 dalam 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
. Digunakan di mobil untuk menentukan pemetaan bagi pengguna di dalam mobil ke lokasi tempat duduk tertentu. CarOccupantZoneService
juga menentukan
pemetaan dari zona penghuni ke layar, periferal lain, dan pengguna setelah
pengguna login ke layar. Zona audio memiliki:
ID zona audio dan ID zona penghuni.
- Memetakan zona audio ke zona penghuni (tempat duduk, layar, dan periferal lainnya)
- Memetakan ID pengguna yang ditetapkan dengan zona audio saat login
Daftar konfigurasi audio. Setiap konfigurasi audio memiliki serangkaian grup volume. Setiap grup volume memiliki serangkaian perangkat bus audio.
Saat volume diubah, semua perangkat audio dalam grup dikontrol dengan cara yang sama.
Setiap perangkat audio diberi daftar atribut audio. Informasi ini digunakan untuk membuat campuran kebijakan audio dengan atribut audio yang ditetapkan secara berbeda.
Konfigurasi ini memungkinkan penggunaan atribut audio yang berbeda dirutekan ke perangkat output yang berbeda di setiap zona. Bergantung pada kasus penggunaannya, suara yang berbeda dapat diputar secara bersamaan. Misalnya, Anda dapat memilih untuk mengonfigurasi kabin utama (zona utama) untuk memutar suara media di semua speaker, tetapi suara navigasi hanya di speaker terdekat dengan pengemudi. Dengan pemutaran suara serentak, kabin utama akan terus mendengarkan media saat navigasi diberikan kepada pengemudi.
Alur kerja login penumpang audio multi-zona
Diagram urutan di bawah menunjukkan alur untuk mengaktifkan perutean audio saat penumpang login ke layar masing-masing:
Gambar 2.
Dalam urutan ini, login pengguna diteruskan 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 set perangkat untuk penumpang. Kasus penggunaan ini memungkinkan penumpang di kursi belakang beralih antara speaker headrest kursi belakang dan periferal headphone kursi belakang.
Dalam hal ini, dua konfigurasi diperlukan. Satu untuk sandaran kepala kursi belakang dan satu untuk periferal headphone. Audio untuk pengguna tertentu dirutekan hanya ke satu konfigurasi dalam 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 terkait dengan speaker dan sandaran kepala perangkat output.
Setelah login, pengguna akan otomatis diberi konfigurasi default. Saat pengguna memilih untuk mengubah konfigurasi, biasanya melalui UI sistem, layanan audio mobil akan mengeksekusi peralihan antara kedua konfigurasi. Dengan cara ini, perangkat output dialihkan antara speaker Z1 dan sandaran kepala 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.
- 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 zona audio seperti yang ditunjukkan pada Gambar 4. Query API menampilkan kedua informasi tersebut kepada penumpang. Pengguna dapat memilih konfigurasi lain 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, hal ini hanya terjadi saat penumpang berada dalam mode transmisi ke zona utama. Kebijakan audio dinamis juga digunakan untuk mengelola perutean audio untuk 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 pengemudi ditambahkan ke daftar perangkat
- Perangkat output yang tersisa untuk zona audio penumpang tetap berada dalam daftar perangkat
Daftar perangkat baru ini ditetapkan ke 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 pembuatan campuran audio, atribut audio lainnya akan ditambahkan ke campuran. Saat pemilihan campuran dilakukan oleh sistem audio, semua suara yang dilampirkan ke campuran dipilih untuk diputar di kabin utama.
Duplikasi audio zona penumpang
Fitur pencerminan audio memungkinkan penumpang membagikan 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 pencerminan audio
Diperlukan minimal dua penumpang untuk mengaktifkan pencerminan audio. Akibatnya, konfigurasi audio dengan hanya dua zona audio penumpang akan memerlukan satu perangkat output mirror. 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 dirutekan ke perangkat cermin audio, bus_1000
. HAL Audio menduplikasi sinyal ke zona sumber.
Gambar 6. Alur kerja konfigurasi zona dinamis.
Perutean ini diaktifkan hanya saat penumpang berada dalam mode pencerminan. Jika tidak, perangkat yang sesuai untuk zona audio akan ditetapkan ke penumpang.
Saat pencerminan diaktifkan untuk penumpang pertama kali, API
AudioPolicy#setUserIdDeviceAffinity
mengubah perutean:
- 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 berada dalam daftar perangkat.
Dengan daftar perangkat, API dipanggil dengan daftar perangkat yang telah diupdate 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 perutean audio untuk penumpang pengguna seperti yang dijelaskan di atas. Layanan audio mobil juga mengirim sinyal ke HAL audio untuk mengonfigurasi dan menduplikasi audio dari perangkat mirror ke zona yang sesuai.
Pada gambar di atas, layanan audio mobil mengirimkan
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 mencapai 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 mirroring ditentukan, bus_1000
dan bus_2000
,
sehingga empat penumpang dapat menggunakan mirroring audio.
<carAudioConfiguration version="3">
<mirroringDevices>
<mirroringDevice address="bus_1000"/>
<mirroringDevice address="bus_2000"/>
</mirroringDevices>
<zones>
....
</zones>
</carAudioConfiguration>