ตั้งแต่วันที่ 27 มีนาคม 2025 เป็นต้นไป เราขอแนะนำให้ใช้ android-latest-release
แทน aosp-main
เพื่อสร้างและมีส่วนร่วมใน AOSP โปรดดูข้อมูลเพิ่มเติมที่หัวข้อการเปลี่ยนแปลงใน AOSP
กำหนดค่าคลังภาพที่แชร์
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
หลังจากสร้างการกำหนดค่านโยบายเสียงแล้ว คุณต้องแพ็กเกจการติดตั้งใช้งาน HAL ลงในคลังที่ใช้ร่วมกันและคัดลอกไปยังตำแหน่งที่เหมาะสม ดังนี้
- สร้าง
device/<company>/<device>/audio
ไดเรกทอรีเพื่อเก็บไฟล์ต้นทางของไลบรารี
- สร้างไฟล์
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)
- หากผลิตภัณฑ์รองรับเสียงที่มีเวลาในการตอบสนองต่ำตามที่ CDD ของ Android ระบุ ให้คัดลอกไฟล์ฟีเจอร์ 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 \
- คัดลอกไฟล์การกำหนดค่านโยบายเสียงที่คุณสร้างขึ้นก่อนหน้านี้ไปยังไดเรกทอรี
system/etc/
ใน Makefile ของผลิตภัณฑ์ device/<company>/<device>/device.mk
เช่น
PRODUCT_COPY_FILES += \
device/samsung/tuna/audio/audio_policy.conf:system/etc/audio_policy.conf
- ประกาศโมดูลที่แชร์ของ HAL เสียงที่ผลิตภัณฑ์ของคุณต้องใช้ใน
device/<company>/<device>/device.mk
Makefile ของผลิตภัณฑ์
เช่น Galaxy Nexus ต้องใช้โมดูล HAL เสียงหลักและบลูทูธ
PRODUCT_PACKAGES += \
audio.primary.tuna \
audio.a2dp.default
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-03-26 UTC
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 2025-03-26 UTC"],[],[],null,["# Configure a shared library\n\nAfter creating an\n[audio policy\nconfiguration](/docs/core/audio/implement-policy), you must package the HAL implementation into a shared library\nand copy it to the appropriate location:\n\n1. Create a `device/\u003ccompany\u003e/\u003cdevice\u003e/audio` directory to contain your library's source files.\n2. Create an `Android.mk` file to build the shared library. Ensure the Makefile contains the following line: \n\n ```\n LOCAL_MODULE := audio.primary.\u003cdevice\u003e\n ```\n\n Your library must be named `audio.primary.\u003cdevice\u003e.so`\n so Android can correctly load the library. The `primary` portion of\n this filename indicates that this shared library is for the primary audio\n hardware located on the device. The module names\n `audio.a2dp.\u003cdevice\u003e` and\n `audio.usb.\u003cdevice\u003e` are also available for Bluetooth and\n USB audio interfaces. Here is an example of an `Android.mk` from the\n Galaxy Nexus audio hardware: \n\n ```\n LOCAL_PATH := $(call my-dir)\n\n include $(CLEAR_VARS)\n\n LOCAL_MODULE := audio.primary.tuna\n LOCAL_MODULE_RELATIVE_PATH := hw\n LOCAL_SRC_FILES := audio_hw.c ril_interface.c\n LOCAL_C_INCLUDES += \\\n external/tinyalsa/include \\\n $(call include-path-for, audio-utils) \\\n $(call include-path-for, audio-effects)\n LOCAL_SHARED_LIBRARIES := liblog libcutils libtinyalsa libaudioutils libdl\n LOCAL_MODULE_TAGS := optional\n\n include $(BUILD_SHARED_LIBRARY)\n ```\n\n3. If your product supports low latency audio as specified by the Android CDD, copy the corresponding XML feature file into your product. For example, in your product's `device/\u003ccompany\u003e/\u003cdevice\u003e/device.mk` Makefile: \n\n ```\n PRODUCT_COPY_FILES := ...\n\n PRODUCT_COPY_FILES += \\\n frameworks/native/data/etc/android.hardware.audio.low_latency.xml:system/etc/permissions/android.hardware.audio.low_latency.xml \\\n ```\n\n4. Copy the audio policy configuration file you created earlier to the `system/etc/` directory in your product's `device/\u003ccompany\u003e/\u003cdevice\u003e/device.mk` Makefile. For example: \n\n ```\n PRODUCT_COPY_FILES += \\\n device/samsung/tuna/audio/audio_policy.conf:system/etc/audio_policy.conf\n ```\n\n5. Declare the shared modules of your audio HAL that are required by your product in the product's `device/\u003ccompany\u003e/\u003cdevice\u003e/device.mk` Makefile. For example, the Galaxy Nexus requires the primary and Bluetooth audio HAL modules: \n\n ```\n PRODUCT_PACKAGES += \\\n audio.primary.tuna \\\n audio.a2dp.default\n ```"]]