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, 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

Arsitektur layanan audio mobil

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

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

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

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 sederhana arsitektur 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, 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.

Alur kerja konfigurasi zona dinamis

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.

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>