Hardware Abstraction Layer (HAL) audio Android menghubungkan API kerangka kerja audio-spesifik tingkat yang lebih tinggi di android.media ke driver audio dan perangkat keras yang mendasarinya. Bagian ini mencakup petunjuk implementasi dan tip untuk meningkatkan kinerja.
Arsitektur audio Android mendefinisikan bagaimana fungsionalitas audio diimplementasikan dan menunjuk ke kode sumber yang relevan yang terlibat dalam implementasi.
- Kerangka aplikasi
- Kerangka kerja aplikasi menyertakan kode aplikasi, yang menggunakan API android.media untuk berinteraksi dengan perangkat keras audio. Secara internal, kode ini memanggil kelas glue JNI yang sesuai untuk mengakses kode asli yang berinteraksi dengan perangkat keras audio.
- JNI
- Kode JNI yang terkait 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 kerja asli
- Kerangka kerja asli menyediakan asli yang setara dengan paket android.media , memanggil proxy Binder IPC untuk mengakses layanan khusus audio dari server media. Kode kerangka kerja asli terletak di
frameworks/av/media/libmedia
. - IPC pengikat
- Proksi Binder IPC memfasilitasi komunikasi melewati batas proses. Proxy terletak di
frameworks/av/media/libmedia
dan dimulai dengan huruf "I". - Server media
- Server media berisi layanan audio, yang merupakan kode aktual yang berinteraksi dengan implementasi HAL Anda. Server media terletak di
frameworks/av/services/audioflinger
. - HAL
- HAL mendefinisikan antarmuka standar yang dipanggil oleh layanan audio dan yang harus Anda terapkan agar perangkat keras audio Anda berfungsi dengan benar. Untuk detail lebih lanjut, lihat antarmuka audio HAL dan komentar di file
*.hal
dari direktori versi HAL yang sesuai. - Pengemudi kernel
- Driver audio berinteraksi dengan perangkat keras Anda dan implementasi HAL. Anda dapat menggunakan Advanced Linux Sound Architecture (ALSA), Open Sound System (OSS), atau custom driver (HAL adalah driver-agnostic).
Catatan : Jika Anda menggunakan ALSA, kami merekomendasikan
external/tinyalsa
untuk porsi pengguna driver karena lisensinya yang kompatibel (library 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 tingkat arsitektur yang sama dengan android.media .