Audio

Ikon HAL Audio Android

Hardware Abstraction Layer (HAL) audio Android menghubungkan API framework khusus audio tingkat yang lebih tinggi di android.media ke driver audio dan hardware yang mendasarinya. Bagian ini mencakup petunjuk dan tips penerapan untuk meningkatkan performa.

Arsitektur audio Android menentukan cara fungsi audio diimplementasikan dan menunjuk ke kode sumber yang relevan yang terlibat dalam implementasi.

Arsitektur audio

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 tingkat yang lebih rendah untuk mengakses hardware audio. JNI berada di frameworks/base/core/jni/ dan frameworks/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 berada 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 yang harus Anda terapkan agar hardware audio Anda berfungsi dengan benar. Untuk mengetahui detail selengkapnya, lihat antarmuka HAL audio dan komentar di file *.hal dari direktori versi HAL yang sesuai.
Driver kernel
Driver audio berinteraksi dengan hardware dan penerapan 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 driver pengguna karena lisensinya yang kompatibel (library mode pengguna standar berlisensi GPL).

Audio native Android berdasarkan Open SL ES (tidak ditampilkan)
API ini diekspos sebagai bagian dari Android NDK dan berada di level arsitektur yang sama dengan android.media.