
Hardware Abstraction Layer (HAL) audio Android menghubungkan API framework khusus audio level yang lebih tinggi di android.media ke driver dan hardware audio yang mendasarinya. Bagian ini mencakup petunjuk penerapan dan tips untuk meningkatkan performa.
Arsitektur audio Android menentukan cara fungsi audio diterapkan dan menunjuk ke kode sumber yang relevan yang terlibat dalam penerapan.

Gambar 1. Arsitektur audio Android
- Framework aplikasi
- Framework aplikasi mencakup kode aplikasi, yang menggunakan API android.media untuk berinteraksi dengan hardware audio. Secara internal, kode ini memanggil class glue JNI yang sesuai untuk mengakses kode native yang berinteraksi dengan hardware audio.
- JNI
-
Kode JNI yang terkait dengan android.media memanggil kode native level lebih rendah untuk mengakses hardware
audio. JNI berada di
frameworks/base/core/jni/
danframeworks/base/media/jni
. - Framework native
-
Framework native menyediakan padanan native untuk paket android.media, yang memanggil
proxy IPC Binder untuk mengakses layanan khusus audio dari server media.
Kode framework native terletak di
frameworks/av/media/libmedia
. - IPC Binder
-
Proxy IPC Binder memfasilitasi komunikasi melalui batas 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 menentukan antarmuka standar yang dipanggil oleh layanan audio dan
harus Anda terapkan agar hardware audio berfungsi dengan benar. Untuk mengetahui detail selengkapnya, lihat antarmuka HAL
audio dan komentar dalam file
*.hal
di direktori versi HAL yang sesuai. - Driver kernel
-
Driver audio berinteraksi dengan hardware dan implementasi HAL Anda. Anda dapat
menggunakan Advanced Linux Sound Architecture (ALSA), Open Sound System (OSS), atau
driver kustom (HAL tidak bergantung pada driver).
Catatan: Jika Anda menggunakan ALSA, sebaiknya gunakan
external/tinyalsa
untuk bagian pengguna dari driver karena lisensinya yang kompatibel (library mode pengguna standar memiliki lisensi GPL). - Audio native Android berdasarkan Open SL ES (tidak ditampilkan)
- API ini diekspos sebagai bagian dari Android NDK dan berada di tingkat arsitektur yang sama dengan android.media.