創建音頻策略配置後,必須將HAL實現打包到共享庫中,然後將其複製到適當的位置:
- 創建一個
device/<company>/<device>/audio
目錄以包含您庫的源文件。 - 創建一個
Android.mk
文件以構建共享庫。確保Makefile包含以下行:
LOCAL_MODULE := audio.primary.<device>
您的庫必須命名為
audio.primary.<device>.so
以便Android可以正確加載該庫。該文件名的primary
部分錶示此共享庫用於設備上的主要音頻硬件。藍牙和USB音頻接口也可以使用模塊名稱audio.a2dp.<device>
和audio.usb.<device>
。這是來自Galaxy Nexus音頻硬件的Android.mk
的示例:LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := audio.primary.tuna LOCAL_MODULE_RELATIVE_PATH := hw LOCAL_SRC_FILES := audio_hw.c ril_interface.c LOCAL_C_INCLUDES += \ external/tinyalsa/include \ $(call include-path-for, audio-utils) \ $(call include-path-for, audio-effects) LOCAL_SHARED_LIBRARIES := liblog libcutils libtinyalsa libaudioutils libdl LOCAL_MODULE_TAGS := optional include $(BUILD_SHARED_LIBRARY)
- 如果您的產品支持Android CDD指定的低延遲音頻,則將相應的XML功能文件複製到您的產品中。例如,在您產品的
device/<company>/<device>/device.mk
生成文件中:PRODUCT_COPY_FILES := ... PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.audio.low_latency.xml:system/etc/permissions/android.hardware.audio.low_latency.xml \
- 將您先前創建的音頻策略配置文件複製到產品的
device/<company>/<device>/device.mk
Makefile中的system/etc/
目錄中。例如:PRODUCT_COPY_FILES += \ device/samsung/tuna/audio/audio_policy.conf:system/etc/audio_policy.conf
- 在產品的
device/<company>/<device>/device.mk
Makefile中聲明產品所需的音頻HAL共享模塊。例如,Galaxy Nexus需要主要和藍牙音頻HAL模塊:PRODUCT_PACKAGES += \ audio.primary.tuna \ audio.a2dp.default