Định cấu hình thư viện dùng chung

Sau khi tạo cấu hình chính sách âm thanh, bạn phải đóng gói quá trình triển khai HAL vào một thư viện dùng chung và sao chép thư viện đó vào vị trí thích hợp:

  1. Tạo thư mục device/<company>/<device>/audio để chứa các tệp nguồn của thư viện.
  2. Tạo tệp Android.mk để tạo thư viện dùng chung. Đảm bảo Makefile chứa dòng sau:
    LOCAL_MODULE := audio.primary.<device>
    

    Bạn phải đặt tên thư viện là audio.primary.<device>.so để Android có thể tải thư viện một cách chính xác. Phần primary của tên tệp này cho biết thư viện dùng chung này dành cho phần cứng âm thanh chính nằm trên thiết bị. Tên mô-đun audio.a2dp.<device>audio.usb.<device> cũng có sẵn cho giao diện âm thanh Bluetooth và USB. Dưới đây là ví dụ về Android.mk từ phần cứng âm thanh 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. Nếu sản phẩm của bạn hỗ trợ âm thanh có độ trễ thấp như quy định của Android CDD, hãy sao chép tệp tính năng XML tương ứng vào sản phẩm của bạn. Ví dụ: trong Makefile device/<company>/<device>/device.mk của sản phẩm:
    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. Sao chép tệp cấu hình chính sách âm thanh mà bạn đã tạo trước đó vào thư mục system/etc/ trong Makefile device/<company>/<device>/device.mk của sản phẩm. Ví dụ:
    PRODUCT_COPY_FILES += \
            device/samsung/tuna/audio/audio_policy.conf:system/etc/audio_policy.conf
    

  5. Khai báo các mô-đun dùng chung của HAL âm thanh mà sản phẩm của bạn yêu cầu trong Makefile device/<company>/<device>/device.mk của sản phẩm. Ví dụ: Galaxy Nexus yêu cầu các mô-đun HAL âm thanh chính và Bluetooth:
    PRODUCT_PACKAGES += \
            audio.primary.tuna \
            audio.a2dp.default