Perutean audio multi-zona

Layanan audio mobil menggunakan kebijakan audio dinamis Core Audio untuk memfasilitasi kasus penggunaan di mobil.

  • Pemutaran audio terpisah untuk setiap penumpang, disebut sebagai audio multi-zona, di mana setiap zona memungkinkan pemutaran suara secara bersamaan.

  • Konfigurasi zona audio dinamis.

  • Transmisi audio zona utama penumpang.

  • Cermin audio penumpang.

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

Audio multi-zona

Audio multi-zona memungkinkan banyak pengguna berinteraksi secara bersamaan dengan AAOS. Seperangkat perangkat keluaran dikaitkan dengan suatu zona, dan setiap zona mempertahankan fokus audio dan tingkat volume. Penumpang dapat mendengarkan audionya sementara 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 merupakan abstraksi output audio, fokus audio, dan pengaturan audio lainnya, yang semuanya dapat dikelola secara mandiri. Untuk tujuan perutean, setiap zona didefinisikan sebagai sekumpulan perangkat bus keluaran audio sebagaimana 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 keluaran 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" occupantZoneI="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 dalam mobil ke lokasi kursi tertentu. CarOccupantZoneService juga mendefinisikan pemetaan dari zona penghuni ke layar, periferal lain, dan pengguna setelah pengguna masuk ke layar. Zona audio memiliki:

  • ID zona audio dan ID zona penghuni.

    • Memetakan zona audio ke zona penumpang (kursi, layar, dan periferal lainnya)
    • Petakan ID pengguna mana yang ditetapkan dengan zona audio saat masuk
  • Daftar konfigurasi audio. Setiap konfigurasi audio memiliki sekumpulan grup volume. Setiap grup volume memiliki seperangkat 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 menyusun campuran kebijakan audio dengan atribut audio yang ditetapkan secara berbeda.

Konfigurasi ini memungkinkan penggunaan atribut audio yang berbeda untuk dialihkan ke perangkat output yang berbeda di setiap zona. Tergantung pada kasus penggunaannya, suara yang berbeda dapat diputar secara bersamaan. Misalnya, Anda dapat memilih untuk mengkonfigurasi kabin utama (zona primer) untuk memutar suara media di semua speaker namun suara navigasi hanya di speaker terdekat dengan pengemudi. Dengan pemutaran suara secara bersamaan, kabin utama terus mendengarkan media sementara navigasi disampaikan kepada pengemudi.

Alur kerja login penumpang audio multi-zona

Diagram urutan di bawah ini menunjukkan alur untuk mengaktifkan perutean audio saat penumpang masuk ke layar masing-masing:

gambar

Gambar 2.

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

  1. Layanan audio mobil (untuk zona audio tertentu) menggunakan API AudioPolicy#removeUserIdDeviceAffinity untuk menghapus afinitas perangkat pengguna. API ini mengambil ID pengguna. Dalam hal ini, pengguna zona sebelumnya.

  2. AudioPolicy#setUserIdDeviceAffinity API menugaskan pengguna baru ke suatu zona, yang mengambil 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 untuk beralih antara speaker sandaran kepala di kursi belakang dan perangkat headphone di kursi belakang.

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

Alur kerja konfigurasi zona dinamis

Gambar 3. Alur kerja konfigurasi zona dinamis.

Gambar 3 mengilustrasikan arsitektur alur kerja konfigurasi zona dinamis. Zona Audio 1 berisi dua konfigurasi, Config 0 dan Config 1 , yang masing-masing terkait dengan speaker perangkat output dan sandaran kepala.

Setelah masuk, pengguna secara otomatis ditetapkan konfigurasi default. Saat pengguna memilih untuk mengubah konfigurasi, biasanya melalui UI sistem, layanan audio mobil akan melakukan peralihan di antara kedua konfigurasi tersebut. Dengan cara ini, perangkat keluaran dialihkan antara speaker Z1 dan sandaran kepala Z1.

Cuplikan kode di bawah menunjukkan pengaturan 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, manajer audio mobil memaparkan API untuk mengelola konfigurasi:

  • Konfigurasi kueri tersedia untuk suatu zona.
  • Kueri saat ini menyetel konfigurasi untuk suatu 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 memaparkan keduanya kepada penumpang. Pengguna dapat memilih konfigurasi berbeda dengan mengetuk perintah untuk konfigurasi yang diinginkan.

Alur kerja konfigurasi zona dinamis

Gambar 4. Alur kerja konfigurasi zona dinamis.

Pemeran 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 media audio penumpang dapat disalurkan ke kabin utama sementara pengemudi tetap memegang kendali 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 keluaran media untuk pengemudi dibagikan dengan penumpang, ini hanya terjadi saat penumpang dialihkan ke mode zona utama. Kebijakan audio dinamis juga digunakan untuk mengelola perutean audio untuk driver, namun tidak ada perubahan yang diterapkan pada afinitas perangkat untuk driver. Untuk penumpang, daftar perangkat keluaran diubah sebagai berikut:

  • Perangkat keluaran media untuk penumpang dihapus dari daftar perangkat
  • Perangkat keluaran media untuk driver ditambahkan ke daftar perangkat
  • Perangkat output yang tersisa untuk zona audio penumpang tetap ada di daftar perangkat

Daftar perangkat baru ini ditetapkan kepada penumpang oleh AudioPolicy#setUserIdDeviceAffinity API. Parameter yang diteruskan ke API adalah daftar perangkat dan ID pengguna penumpang. Ketika layanan kebijakan audio sistem audio menanyakan 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 diisolasi dari penggunaan atribut audio lainnya. Jika tidak, selama pembuatan campuran audio, atribut audio lainnya akan ditambahkan ke dalam campuran. Ketika pemilihan campuran dilakukan oleh sistem audio, semua suara yang melekat pada campuran tersebut dipilih untuk diputar di kabin utama.

Cermin audio zona penumpang

Fitur cermin audio memungkinkan penumpang berbagi audio. Fitur mirror menggandakan data audio di setiap zona audio sehingga seluruh penumpang dapat mendengarkan audio yang sama. Dalam hal ini, fokus audio dibagikan kepada penumpang yang terlibat dalam pencerminan audio.

Perutean cermin audio

Diperlukan minimal dua penumpang untuk mengaktifkan pencerminan audio. Akibatnya, konfigurasi audio dengan hanya dua zona audio penumpang memerlukan satu perangkat keluaran cermin. Dengan definisi di atas, dua sesi mirroring secara bersamaan dapat dimulai.

Gambar di bawah menunjukkan diagram sederhana untuk pencerminan audio multi-zona antara dua penumpang. Audio dari kedua penumpang dialihkan ke perangkat cermin audio, bus_1000 . Audio HAL menduplikasi sinyal ke zona sumber.

Alur kerja konfigurasi zona dinamis

Gambar 6. Alur kerja konfigurasi zona dinamis.

Perutean ini hanya diaktifkan ketika penumpang berada dalam mode mirroring. Jika tidak, perangkat yang sesuai untuk zona audio akan ditetapkan untuk penumpang. Saat pencerminan pertama kali diaktifkan untuk penumpang, AudioPolicy#setUserIdDeviceAffinity API mengubah perutean:

  • Perangkat keluaran media untuk penumpang dihapus dari daftar perangkat.
  • Perangkat keluaran cermin ditambahkan ke daftar perangkat.
  • Perangkat keluaran yang tersisa untuk zona audio penumpang tetap ada di daftar perangkat.

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

Alur kerja cermin audio

Gambar 7. Alur kerja cermin audio.

Pada Gambar 7, API manajer audio mobil untuk mengelola pencerminan audio dipanggil dari Layanan Sistem Media. Secara khusus, API untuk mengaktifkan pencerminan audio untuk Pengguna 1 dan Pengguna 2, CarAudioManager#enableMirrorForAudioZones .

Layanan audio mobil mengonfigurasi perutean audio untuk penumpang pengguna seperti dijelaskan di atas. Layanan audio mobil juga mengirimkan sinyal ke audio HAL untuk mengkonfigurasi dan menduplikasi audio dari perangkat cermin 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 dan bus_10 dan 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 cermin audio, sinyal berikut dikirim, mirroring_src=bus_1000;mirroring=off . Sinyal ini dapat digunakan oleh HAL untuk menonaktifkan duplikasi audio ketika 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 didefinisikan, bus_1000 dan bus_2000 , sehingga empat penumpang dapat menggunakan audio mirroring.

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