設定共用資料庫

建立 Deployment 後 音訊政策 設定,您必須將 HAL 實作封裝至共用程式庫 並複製到適當位置:

  1. 建立 device/<company>/<device>/audio 目錄,包含程式庫的來源檔案。
  2. 建立 Android.mk 檔案來建立共用資料庫。確保 Makefile 中包含下列幾行:
    LOCAL_MODULE := audio.primary.<device>
    

    媒體庫的名稱必須是「audio.primary.<device>.so」 ,以便 Android 正確載入程式庫的 primary 部分 這個檔案名稱表示這個共用資料庫適用於主要音訊 安裝在裝置上的硬體位置模組名稱 「audio.a2dp.<device>」和 「audio.usb.<device>」也適用於藍牙和 USB 音訊介面。以下是Android.mk Galaxy Nexus 音訊硬體:

    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)
    

  3. 如果您的產品支援 Android CDD 指定的低延遲音訊, 將對應的 XML 功能檔案複製到產品中。舉例來說,在您的 產品的device/<company>/<device>/device.mk Makefile:
    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 \
    

  4. 將先前建立的音訊政策設定檔複製到 產品目錄的 system/etc/ 目錄 device/<company>/<device>/device.mk Makefile。 例如:
    PRODUCT_COPY_FILES += \
            device/samsung/tuna/audio/audio_policy.conf:system/etc/audio_policy.conf
    

  5. 宣告音訊 HAL 所需的共用模組 應用於產品 device/<company>/<device>/device.mk Makefile。 舉例來說,Galaxy Nexus 需要主要和藍牙音訊 HAL 模組:
    PRODUCT_PACKAGES += \
            audio.primary.tuna \
            audio.a2dp.default