پس از ایجاد یک پیکربندی خط مشی صوتی ، باید اجرای 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/
موجود درdevice/<company>/<device>/device.mk
Makefile محصول خود کپی کنید. به عنوان مثال: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