Google is committed to advancing racial equity for Black communities. See how.
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

音訊

Android Audio HAL圖標

Android的音頻硬件抽象層(HAL)將android.media中更高級別的音頻特定框架API連接到基礎音頻驅動程序和硬件。本節包括實現說明和提高性能的提示。

Android音頻架構定義了音頻功能的實現方式,並指向實現中涉及的相關源代碼。

音頻架構

圖1. Android音頻架構

應用框架
應用程序框架包含應用程序代碼,該代碼使用android.media API與音頻硬件進行交互。在內部,此代碼調用相應的JNI膠水類以訪問與音頻硬件交互的本機代碼。
傑尼
android.media關聯的JNI代碼調用較低級別的本機代碼來訪問音頻硬件。 JNI位於frameworks/base/core/jni/frameworks/base/media/jni
本機框架
本機框架提供與android.media包等效的本機框架,調用Binder IPC代理以訪問媒體服務器的音頻特定服務。本機框架代碼位於frameworks/av/media/libmedia
活頁夾IPC
活頁夾IPC代理有助於跨過程邊界進行通信。代理位於frameworks/av/media/libmedia ,並以字母“ I”開頭。
媒體服務器
媒體服務器包含音頻服務,這是與HAL實現交互的實際代碼。媒體服務器位於frameworks/av/services/audioflinger
哈爾
HAL定義了音頻服務調用的標準接口,您必須實現該標準接口,音頻硬件才能正常運行。音頻HAL接口位於hardware/libhardware/include/hardware 。有關詳細信息,請參見audio.h
內核驅動
音頻驅動程序與您的硬件和HAL實施交互。您可以使用高級Linux聲音體系結構(ALSA),開放式聲音系統(OSS)或自定義驅動程序(HAL與驅動程序無關)。

注意 :如果您使用ALSA,我們建議在驅動程序的用戶部分使用external/tinyalsa ,因為它具有兼容的許可(標準的用戶模式庫是GPL許可的)。

基於Open SL ES的Android本機音頻(未顯示)
該API作為Android NDK的一部分公開,並且與android.media具有相同的體系結構級別。