Ringkasan

Android Automotive OS (AAOS) dibangun di atas stack audio Android inti untuk mendukung kasus penggunaan pengoperasian sebagai sistem infotainmen di kendaraan. AAOS bertanggung jawab atas suara infotainment (yaitu media, navigasi, dan komunikasi), tetapi tidak bertanggung jawab secara langsung atas bunyi lonceng dan peringatan yang memiliki persyaratan ketersediaan dan waktu yang ketat.

Meskipun AAOS menyediakan sinyal dan mekanisme untuk membantu kendaraan mengelola audio, pada akhirnya kendaraanlah yang memutuskan suara apa yang harus diputar untuk pengemudi dan penumpang, sehingga memastikan suara penting terkait keselamatan dan suara peraturan terdengar dengan baik tanpa gangguan.

Karena AAOS memanfaatkan stack audio Android, aplikasi pihak ketiga yang memutar audio tidak perlu melakukan hal yang berbeda dari yang mereka lakukan di ponsel. Perutean audio aplikasi dikelola secara otomatis oleh AAOS seperti yang dijelaskan dalam Konfigurasi kebijakan audio.

Karena Android mengelola pengalaman media kendaraan, sumber media eksternal seperti tuner radio harus diwakili oleh aplikasi, yang dapat menangani fokus audio dan peristiwa tombol media untuk sumber tersebut.

Suara dan aliran data Android

Sistem audio otomotif menangani suara dan streaming berikut:

gambar

Gambar 1. Diagram arsitektur yang berfokus pada streaming.

Android mengelola suara yang berasal dari aplikasi Android, mengontrol aplikasi tersebut, dan merutekan suaranya ke perangkat output di HAL berdasarkan jenis suara:

  • Aliran logis, yang dikenal sebagai sumber dalam nomenklatur audio inti, diberi tag dengan Atribut audio.

  • Aliran fisik, yang dikenal sebagai perangkat dalam nomenklatur audio inti, tidak memiliki informasi konteks setelah pencampuran.

Untuk keandalan, suara eksternal (yang berasal dari sumber independen, seperti denting peringatan sabuk pengaman) dikelola di luar Android, di bawah HAL atau bahkan di hardware terpisah. Penerapan sistem harus menyediakan mixer yang menerima satu atau beberapa aliran input suara dari Android, lalu menggabungkan aliran tersebut dengan cara yang sesuai dengan sumber suara eksternal yang diperlukan oleh kendaraan. Android Control HAL menyediakan mekanisme yang berbeda untuk suara yang dihasilkan di luar Android agar dapat berkomunikasi kembali ke Android:

  • Permintaan fokus audio
  • Batasan penguatan atau volume
  • Perubahan gain dan volume

Implementasi HAL audio dan mixer eksternal bertanggung jawab untuk memastikan suara eksternal yang penting untuk keselamatan terdengar dan untuk mencampur aliran yang disediakan Android dan merutekannya ke speaker yang sesuai.

Suara Android

Aplikasi dapat memiliki satu atau beberapa pemutar yang berinteraksi melalui Android API standar (misalnya, AudioManager untuk kontrol fokus atau MediaPlayer untuk streaming) guna memancarkan satu atau beberapa aliran data audio logis. Data ini dapat berupa mono satu saluran atau surround 7.1, tetapi dirutekan dan diperlakukan sebagai satu sumber. Aliran aplikasi dikaitkan dengan AudioAttributes yang memberikan petunjuk kepada sistem tentang cara audio harus diekspresikan.

Aliran logis dikirim melalui AudioService dan dirutekan ke salah satu (dan hanya satu) aliran output fisik yang tersedia, yang masing-masing merupakan output dari mixer dalam AudioFlinger. Setelah atribut audio di-mix down ke streaming fisik, atribut tersebut tidak lagi tersedia.

Setiap stream fisik kemudian dikirimkan ke HAL Audio untuk rendering di hardware. Di aplikasi otomotif, hardware rendering dapat berupa codec lokal (mirip dengan perangkat seluler) atau prosesor jarak jauh di seluruh jaringan fisik kendaraan. Bagaimanapun juga, tugas implementasi HAL Audio adalah mengirimkan data sampel yang sebenarnya dan membuatnya dapat didengar.

Streaming eksternal

Aliran suara yang tidak boleh dirutekan melalui Android (untuk sertifikasi atau alasan pengaturan waktu) dapat dikirim langsung ke mixer eksternal. Mulai Android 11, HAL kini dapat meminta fokus untuk suara eksternal ini guna memberi tahu Android sehingga Android dapat mengambil tindakan yang sesuai seperti menjeda media atau mencegah orang lain mendapatkan fokus.

Jika aliran eksternal adalah sumber media yang harus berinteraksi dengan lingkungan suara yang dihasilkan Android (misalnya, menghentikan pemutaran MP3 saat tuner eksternal diaktifkan), aliran eksternal tersebut harus diwakili oleh aplikasi Android. Aplikasi tersebut akan meminta Fokus audio atas nama sumber media, bukan HAL, dan akan merespons notifikasi fokus dengan memulai dan menghentikan sumber eksternal sesuai kebutuhan agar sesuai dengan kebijakan fokus Android.

Aplikasi juga bertanggung jawab untuk menangani peristiwa tombol media seperti putar dan jeda. Salah satu mekanisme yang disarankan untuk mengontrol perangkat eksternal tersebut adalah HwAudioSource. Untuk mempelajari lebih lanjut, lihat Menghubungkan perangkat input di AAOS.

Perangkat output

Di tingkat HAL Audio, jenis perangkat AUDIO_DEVICE_OUT_BUS menyediakan perangkat output generik untuk digunakan dalam sistem audio kendaraan. Perangkat bus mendukung port yang dapat dialamatkan (dengan setiap port sebagai titik akhir untuk streaming fisik) dan diharapkan menjadi satu-satunya jenis perangkat output yang didukung di kendaraan.

Implementasi sistem dapat menggunakan satu port bus untuk semua suara Android, yang dalam hal ini Android akan memadukan semuanya dan mengirimkannya sebagai satu aliran. Atau, HAL dapat menyediakan satu port bus untuk setiap CarAudioContext untuk memungkinkan pengiriman serentak dari semua jenis suara. Hal ini memungkinkan implementasi HAL mencampur dan meredam berbagai suara sesuai keinginan.

Penetapan konteks audio ke perangkat output dilakukan melalui file car_audio_configuration.xml. Untuk mempelajari lebih lanjut, lihat Konfigurasi kebijakan audio.