Pemilihan rute audio multi-zona

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

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

  • Konfigurasi zona audio dinamis.

  • Transmisi audio zona utama penumpang.

  • Cermin audio penumpang.

Dalam setiap kasus penggunaan, layanan audio mobil menggunakan kebijakan audio dinamis untuk mengarahkan audio secara otomatis ke perangkat {i>output<i} yang ditentukan.

Audio multi-zona

Audio multi-zona memungkinkan banyak pengguna untuk berinteraksi dengan AAOS secara bersamaan. J satu set perangkat output yang dikaitkan dengan satu zona, dan setiap zona menyimpan audio fokus dan level volume. Penumpang dapat mendengarkan audio mereka 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 adalah abstraksi output audio, fokus audio, dan setelan audio, yang semuanya dapat dikelola secara independen. Untuk tujuan {i>routing<i}, setiap zona didefinisikan sebagai serangkaian perangkat bus output audio seperti yang konfigurasi kebijakan audio. Perangkat dapat berbeda untuk setiap definisi zona audio. Pada Gambar 1, perangkat bus 1 sampai 5 termasuk dalam zona nol, perangkat bus 6 sampai 8 milik zona satu, dan perangkat bus 9 hingga 11 milik 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 menampilkan mobil konfigurasi audio 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. {i>Tcpdump<i} digunakan di mobil untuk mendefinisikan pemetaan bagi pengguna di mobil ke lokasi tempat duduk tertentu. CarOccupantZoneService juga menentukan pemetaan dari zona penumpang ke layar, periferal lain, dan pengguna setelah saat pengguna masuk ke tampilan. Zona audio memiliki:

  • ID zona audio dan ID zona penumpang.

    • Memetakan zona audio ke zona penumpang (kursi, layar, dan periferal lainnya)
    • Petakan ID pengguna yang ditetapkan dengan zona audio saat login
  • Daftar konfigurasi audio. Setiap konfigurasi audio memiliki serangkaian kelompok volume. Setiap grup volume memiliki sekumpulan perangkat bus audio.

    • Saat volume diubah, semua perangkat audio dalam grup akan dikontrol di dengan cara yang sama.

    • Setiap perangkat audio memiliki daftar atribut audio. Ini informasi digunakan untuk menyusun campuran kebijakan audio dengan cara yang berbeda atribut audio yang ditetapkan.

Konfigurasi ini memungkinkan perutean penggunaan atribut audio yang berbeda perangkat {i>output<i} yang berbeda di setiap zona. Tergantung pada kasus penggunaannya, berbagai suara dapat diputar secara serentak. Misalnya, Anda dapat memilih untuk mengonfigurasi kabin (zona utama) untuk memutar suara media di semua speaker, kecuali suara navigasi hanya di speaker terdekat dengan {i>driver<i}. Dengan pemutaran suara secara serentak, kabin utama terus mendengarkan media saat navigasi dikirimkan ke {i>driver<i}.

Alur kerja login penumpang audio multi-zona

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

gambar

Gambar 2.

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

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

  2. AudioPolicy#setUserIdDeviceAffinity API menetapkan pengguna baru ke berdasarkan zona, yang menggunakan ID pengguna dan semua perangkat untuk zona tertentu konfigurasi Anda.

Konfigurasi zona dinamis

Di Android 14, konfigurasi zona dinamis adalah diperkenalkan agar OEM dapat mengonfigurasi berbagai perangkat yang berbeda untuk penumpang. Kasus penggunaan memungkinkan penumpang di kursi belakang untuk berpindah-pindah kursi belakang speaker headrest dan periferal headphone di kursi belakang.

Dalam hal ini, diperlukan dua konfigurasi. Masing-masing satu untuk kursi belakang {i>headrest<i} dan periferal headphone. Audio untuk pengguna tertentu dirutekan hanya ke satu konfigurasi dalam satu waktu.

Konfigurasi zona dinamis
alur kerja

Gambar 3. Alur kerja konfigurasi zona dinamis.

Gambar 3 ilustrasi arsitektur untuk konfigurasi zona dinamis alur kerja. Zona audio 1 berisi dua konfigurasi, Config 0 dan Config 1, yang masing-masing terkait dengan {i> speaker <i}dan {i>headrest<i} perangkat {i>output<i}.

Setelah login, pengguna akan otomatis ditetapkan dengan konfigurasi default. Saat pengguna memilih untuk mengubah konfigurasi, biasanya melalui UI sistem, layanan audio mobil menjalankan peralihan di antara dua konfigurasi tersebut. Di sini cara itu, perangkat {i>output<i} dialihkan antara {i>speaker<i} Z1 dan {i>headrest<i} 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 sebuah zona.
  • Mengkueri konfigurasi yang saat ini disetel untuk suatu zona.
  • Alihkan ke konfigurasi lain.

Aplikasi atau layanan UI sistem dapat menggunakan API ini untuk mengelola konfigurasi untuk zona audio seperti yang ditampilkan dalam Gambar 4. Query API menampilkan keduanya kepada penumpang. Pengguna dapat memilih konfigurasi yang berbeda dengan mengetuk perintah untuk konfigurasi yang diinginkan.

Konfigurasi zona dinamis
alur kerja

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. Di sini audio media penumpang dapat ditransmisikan ke kabin utama sementara {i>driver<i} tetap memegang kendali penuh.

Gambar di bawah menunjukkan versi arsitektur yang disederhanakan untuk transmisi audio media penumpang zona.

Konfigurasi zona dinamis
alur kerja

Gambar 5. Alur kerja konfigurasi zona dinamis.

Gambar menunjukkan bahwa perangkat output media untuk {i>driver<i} dibagikan dengan penumpang, ini hanya terjadi saat penumpang di transmisi ke zona utama mode. Kebijakan audio dinamis juga digunakan untuk mengelola perutean audio untuk {i>driver<i} tetapi tidak ada perubahan yang diterapkan pada afinitas perangkat untuk {i>driver<i}. Sebagai kepada penumpang, daftar perangkat {i>output<i} diubah sebagai berikut:

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

Daftar perangkat baru ini diberikan kepada penumpang oleh API AudioPolicy#setUserIdDeviceAffinity. Parameter yang diteruskan ke API daftar perangkat dan ID pengguna penumpang. Saat audio sistem audio kueri layanan kebijakan mana mix audio yang akan dipilih untuk trek media yang terkait dengan penumpang, campuran audio media yang terkait dengan zona dipilih.

Persyaratan utama untuk transmisi audio zona utama adalah bahwa media zona utama perangkat output diisolasi dari penggunaan atribut audio lainnya. Jika tidak, selama pembuatan campuran audio, atribut audio lainnya ditambahkan ke video tersebut. Saat pemilihan campuran dilakukan oleh sistem audio, semua suara yang terpasang pada campuran dipilih untuk diputar di kabin utama.

Cermin audio zona penumpang

Fitur cermin audio memungkinkan penumpang berbagi audio. Fitur cermin membuat duplikat data audio di setiap zona audio sehingga semua penumpang dapat mendengarkannya audio yang sama. Dalam hal ini, fokus audio dibagikan kepada penumpang yang terlibat dalam pencerminan audio.

Pemilihan rute cerminan audio

Diperlukan minimal dua penumpang untuk mengaktifkan pencerminan audio. Sebagai seorang menghasilkan konfigurasi audio dengan hanya dua zona audio penumpang akan memerlukan satu perangkat output cermin. Dengan definisi di atas, dua pencerminan serentak dapat dimulai;

Gambar di bawah menampilkan diagram yang disederhanakan untuk pencerminan audio multi-zona di antara dua penumpang. Audio dari kedua penumpang diarahkan ke cermin audio perangkat, bus_1000. Audio HAL menduplikasi sinyal ke zona sumber.

Konfigurasi zona dinamis
alur kerja

Gambar 6. Alur kerja konfigurasi zona dinamis.

Perutean ini diaktifkan hanya saat penumpang dalam mode pencerminan. Jika tidak, perangkat terkait untuk zona audio akan diberikan kepada penumpang. Saat pencerminan pertama kali diaktifkan untuk penumpang, AudioPolicy#setUserIdDeviceAffinity API mengubah pemilihan rute:

  • Perangkat output media untuk penumpang dihapus dari daftar perangkat.
  • Cerminkan perangkat output yang ditambahkan ke daftar perangkat.
  • Perangkat output untuk zona audio penumpang lainnya tetap ada di daftar perangkat.

Dengan daftar perangkat, API akan dipanggil dengan daftar perangkat yang diperbarui dan ID pengguna milik penumpang. Gambar berikut menampilkan diagram urutan pencerminan audio.

Alur kerja pencerminan audio

Gambar 7. Alur kerja pencerminan audio.

Di Gambar 7, API pengelola audio mobil untuk mengelola pencerminan audio adalah yang dipanggil dari {i>Media System Service<i}. Secara khusus, API untuk mengaktifkan audio untuk Pengguna 1 dan Pengguna 2, CarAudioManager#enableMirrorForAudioZones.

Layanan audio mobil mengonfigurasi perutean audio untuk penumpang pengguna sebagai yang dijelaskan di atas. Layanan audio mobil juga mengirimkan sinyal ke HAL audio untuk mengonfigurasi dan menduplikasi audio dari perangkat cermin ke serta region mendatang dan zonanya.

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

dalam hal ini,

bus_1000 adalah bus sumber dan bus_10 dan bus_20 adalah tujuannya bus.

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

Setelah menonaktifkan cermin audio, sinyal berikut ini dikirim, mirroring_src=bus_1000;mirroring=off. Sinyal ini dapat digunakan oleh HAL untuk menonaktifkan duplikasi audio saat pencerminan audio tidak diaktifkan. Untuk menentukan audio perangkat pencerminan, file konfigurasi audio mobil berisi bagian yang 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>