Mulai 27 Maret 2025, sebaiknya gunakan android-latest-release
, bukan aosp-main
, untuk mem-build dan berkontribusi pada AOSP. Untuk mengetahui informasi selengkapnya, lihat Perubahan pada AOSP.
Audio
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
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/
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 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 detail selengkapnya, lihat antarmuka HAL
audio dan komentar dalam file
*.hal
dari 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.
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-07-27 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-07-27 UTC."],[],[],null,["# Audio\n\nAndroid's audio Hardware Abstraction Layer (HAL) connects the higher-level,\naudio-specific framework APIs in [android.media](http://developer.android.com/reference/android/media/package-summary.html) to the underlying audio driver and\nhardware. This section includes implementation instructions and tips for\nimproving performance.\n\n\nAndroid audio architecture defines how audio functionality is implemented and\npoints to the relevant source code involved in the implementation.\n\n\n**Figure 1.** Android audio architecture\n\n\nApplication framework\n:\n The application framework includes the app code, which uses the [android.media](http://developer.android.com/reference/android/media/package-summary.html) APIs to\n interact with audio hardware. Internally, this code calls corresponding JNI glue\n classes to access the native code that interacts with audio hardware.\n\n\nJNI\n:\n The JNI code associated with [android.media](http://developer.android.com/reference/android/media/package-summary.html) calls lower level native code to access audio\n hardware. JNI is located in `frameworks/base/core/jni/` and\n `frameworks/base/media/jni`.\n\n\nNative framework\n:\n The native framework provides a native equivalent to the [android.media](http://developer.android.com/reference/android/media/package-summary.html) package, calling\n Binder IPC proxies to access the audio-specific services of the media server.\n Native framework code is located in `frameworks/av/media/libmedia`.\n\n\nBinder IPC\n:\n Binder IPC proxies facilitate communication over process boundaries. Proxies are\n located in `frameworks/av/media/libmedia` and begin with the letter\n \"I\".\n\n\nMedia server\n:\n The media server contains audio services, which are the actual code that\n interacts with your HAL implementations. The media server is located in\n `frameworks/av/services/audioflinger`.\n\n\nHAL\n:\n The HAL defines the standard interface that audio services call into and that\n you must implement for your audio hardware to function correctly. For more details, refer to the [audio HAL\n interface](https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/android16-release/audio/) and comments in the `*.hal` files of the corresponding HAL version directory.\n\n\nKernel driver\n\n: The audio driver interacts with your hardware and HAL implementation. You can use Advanced Linux Sound Architecture (ALSA), Open Sound System (OSS), or a custom driver (HAL is driver-agnostic). **Note** : If you use ALSA, we recommend\n `external/tinyalsa` for the user portion of the driver because of its\n compatible licensing (the standard user-mode library is GPL-licensed).\n\n\nAndroid native audio based on Open SL ES *(not shown)*\n:\n This API is exposed as part of\n [Android NDK](https://developer.android.com/tools/sdk/ndk/index.html)\n and is at the same architecture level as\n [android.media](http://developer.android.com/reference/android/media/package-summary.html)."]]