Audio

Ikon Android Audio HAL

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.

Arsitektur audio

Gambar 1. Arsitektur audio Android

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/ dan frameworks/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 .