Pemilihan rute audio multi-zona

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, yang memungkinkan setiap zona memutar suara secara bersamaan.

  • Konfigurasi zona audio dinamis.

  • Transmisi audio zona utama penumpang.

  • Transmisi audio penumpang.

Dalam setiap kasus penggunaan, layanan audio mobil menggunakan kebijakan audio dinamis untuk otomatis merutekan audio ke perangkat output yang ditentukan.

Audio multi-zona

Audio multi-zona memungkinkan beberapa pengguna berinteraksi dengan AAOS secara bersamaan. Kumpulan perangkat output dikaitkan dengan zona, dan setiap zona mempertahankan fokus audio dan tingkat volume. Penumpang dapat mendengarkan audio mereka saat pengemudi mendengarkan sumber lain di zona utama (biasanya, kabin utama).

Arsitektur audio multi-zona

Arsitektur layanan audio mobil

Gambar 1. Arsitektur layanan audio mobil.

Zona audio mobil adalah abstraksi 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 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. ID ini digunakan di mobil untuk menentukan pemetaan bagi pengguna di mobil ke lokasi kursi tertentu. CarOccupantZoneService juga menentukan pemetaan dari zona penumpang ke layar, periferal lain, 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 yang ditetapkan dengan zona audio saat login
  • Daftar konfigurasi audio. Setiap konfigurasi audio memiliki kumpulan 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 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 penggunaan, 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 yang paling dekat dengan pengemudi. Dengan pemutaran suara secara bersamaan, kabin utama terus mendengarkan media saat navigasi dikirimkan 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

Gambar 2.

Dalam urutan ini, login pengguna disebarkan ke layanan audio mobil melalui layanan zona penumpang.

  1. 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.

  2. 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 kumpulan perangkat yang berbeda untuk penumpang. Kasus penggunaan ini memungkinkan penumpang di kursi belakang beralih antara speaker sandaran kepala kursi belakang dan periferal headphone kursi belakang.

Dalam hal ini, diperlukan dua konfigurasi. Satu untuk sandaran kepala kursi belakang dan satu untuk periferal headphone. Audio untuk pengguna tertentu dirutekan hanya ke satu konfigurasi dalam satu waktu.

Alur kerja konfigurasi zona dinamis

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 sandaran kepala.

Saat login, pengguna otomatis ditetapkan ke konfigurasi default. Saat pengguna memilih untuk mengubah konfigurasi, biasanya melalui UI sistem, layanan audio mobil akan menjalankan peralihan antara kedua konfigurasi tersebut. 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:

  • Mengirim kueri konfigurasi yang tersedia untuk zona.
  • Mengirim kueri konfigurasi yang saat ini ditetapkan untuk zona.
  • Beralih ke konfigurasi lain.

Aplikasi atau layanan UI sistem dapat menggunakan API ini untuk mengelola konfigurasi zona audio seperti yang ditunjukkan pada Gambar 4. Query API mengekspos keduanya ke penumpang. Pengguna dapat memilih konfigurasi lain dengan mengetuk perintah untuk konfigurasi yang diinginkan.

Alur kerja konfigurasi zona dinamis

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 arsitektur yang disederhanakan untuk transmisi audio media penumpang zona utama.

Alur kerja konfigurasi zona dinamis

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 pemilihan rute audio bagi pengemudi, tetapi tidak ada perubahan yang diterapkan pada afinitas perangkat untuk pengemudi. 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 di 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 mengirim kueri 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 akan dipilih untuk diputar di kabin utama.

Transmisi audio zona penumpang

Fitur transmisi audio memungkinkan penumpang berbagi audio. Fitur transmisi 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 transmisi audio.

Pemilihan rute transmisi audio

Diperlukan minimal dua penumpang untuk mengaktifkan transmisi audio. Akibatnya, konfigurasi audio dengan hanya dua zona audio penumpang akan memerlukan satu perangkat output transmisi. Dengan definisi di atas, dua sesi transmisi serentak dapat dimulai.

Gambar di bawah menunjukkan diagram yang disederhanakan untuk transmisi audio multi-zona antara dua penumpang. Audio dari kedua penumpang dirutekan ke perangkat transmisi audio, bus_1000. Audio HAL menduplikasi sinyal ke zona sumber.

Alur kerja konfigurasi zona dinamis

Gambar 6. Alur kerja konfigurasi zona dinamis.

Pemilihan rute ini diaktifkan hanya saat penumpang berada dalam mode transmisi. Jika tidak, perangkat yang sesuai untuk zona audio akan ditetapkan ke penumpang. Saat transmisi pertama kali diaktifkan untuk penumpang, AudioPolicy#setUserIdDeviceAffinity API akan mengubah pemilihan rute:

  • Perangkat output media untuk penumpang dihapus dari daftar perangkat.
  • Perangkat output transmisi ditambahkan ke daftar perangkat.
  • Perangkat output yang tersisa untuk zona audio penumpang tetap berada di daftar perangkat.

Dengan daftar perangkat, API dipanggil dengan daftar perangkat yang diperbarui dan ID pengguna penumpang. Gambar berikut memberikan diagram urutan alur kerja transmisi audio.

Alur kerja pencerminan audio

Gambar 7. Alur kerja transmisi audio.

Pada Gambar 7, API pengelola audio mobil untuk mengelola transmisi audio dipanggil dari Layanan Sistem Media. Secara khusus, API untuk mengaktifkan transmisi 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 mengirim sinyal ke HAL audio untuk mengonfigurasi dan menduplikasi audio dari perangkat transmisi ke zona yang sesuai.

Pada gambar di atas, layanan audio mobil mengirim mirroring_src=bus_1000;mirroring_dest=bus_10,bus_20

dengan,

bus_1000 adalah bus sumber dan bus_10 serta bus_20 adalah bus tujuan.

Tidak ditampilkan dalam diagram urutan adalah sinyal yang dikirim melalui AudioManager#setParameters API, yang mencapai HAL melalui layanan audio.

Setelah menonaktifkan transmisi audio, sinyal berikut akan dikirim, mirroring_src=bus_1000;mirroring=off. Sinyal ini dapat digunakan oleh HAL untuk menonaktifkan duplikasi audio saat transmisi audio tidak diaktifkan. Untuk menentukan perangkat transmisi audio, file konfigurasi audio mobil berisi bagian bernama mirroringDevices, seperti yang ditunjukkan pada cuplikan di bawah.

Dalam cuplikan ini, dua perangkat transmisi ditentukan, bus_1000 dan bus_2000, sehingga empat penumpang dapat menggunakan transmisi audio.

<carAudioConfiguration version="3">
   <mirroringDevices>
       <mirroringDevice address="bus_1000"/>
       <mirroringDevice address="bus_2000"/>
   </mirroringDevices>
  <zones>
    ....
  </zones>
</carAudioConfiguration>