กำหนดค่าไลบรารีที่ใช้ร่วมกัน

หลังจากสร้าง คอนฟิกูเรชันนโยบายเสียง คุณต้องทำแพ็กเกจการนำ 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> สามารถใช้ได้กับอินเทอร์เฟซเสียง Bluetooth และ 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