Lapisan Abstraksi Perangkat Keras (HAL) audio Android menghubungkan API framework khusus audio tingkat tinggi di android.media ke driver audio dan perangkat keras yang mendasarinya. Bagian ini mencakup petunjuk penerapan dan tip untuk meningkatkan kinerja.
Arsitektur audio Android mendefinisikan bagaimana fungsi audio diimplementasikan dan menunjuk ke kode sumber relevan yang terlibat dalam implementasi.
- Kerangka aplikasi
- Framework aplikasi mencakup kode aplikasi, yang menggunakan API android.media untuk berinteraksi dengan hardware audio. Secara internal, kode ini memanggil kelas lem JNI yang sesuai untuk mengakses kode asli yang berinteraksi dengan perangkat keras audio.
- JNI
- Kode JNI yang dikaitkan dengan android.media memanggil kode asli tingkat yang lebih rendah untuk mengakses perangkat keras audio. JNI terletak di
frameworks/base/core/jni/
danframeworks/base/media/jni
. - Kerangka asli
- Kerangka kerja asli menyediakan paket asli yang setara dengan paket android.media , yang memanggil proxy Binder IPC untuk mengakses layanan khusus audio dari server media. Kode kerangka kerja asli terletak di
frameworks/av/media/libmedia
. - Pengikat IPC
- Proksi Binder IPC memfasilitasi komunikasi melewati batasan proses. Proxy terletak di
frameworks/av/media/libmedia
dan diawali dengan huruf "I". - Server media
- Server media berisi layanan audio, yang merupakan kode sebenarnya yang berinteraksi dengan implementasi HAL Anda. Server media terletak di
frameworks/av/services/audioflinger
. - HAL
- HAL mendefinisikan antarmuka standar yang digunakan oleh layanan audio dan harus Anda terapkan agar perangkat keras audio Anda berfungsi dengan benar. Untuk lebih jelasnya, lihat antarmuka audio HAL dan komentar di file
*.hal
dari direktori versi HAL yang sesuai. - Pengemudi kernel
- Driver audio berinteraksi dengan perangkat keras dan implementasi HAL Anda. Anda dapat menggunakan Advanced Linux Sound Architecture (ALSA), Open Sound System (OSS), atau driver khusus (HAL adalah driver-agnostic).
Catatan : Jika Anda menggunakan ALSA, kami merekomendasikan
external/tinyalsa
untuk bagian pengguna driver karena lisensinya yang kompatibel (perpustakaan mode pengguna standar berlisensi GPL). - Audio asli Android berdasarkan Open SL ES (tidak ditampilkan)
- API ini diekspos sebagai bagian dari Android NDK dan berada pada level arsitektur yang sama dengan android.media .