После создания конфигурации политики аудио необходимо упаковать реализацию 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>
также доступны для аудиоинтерфейсов 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)
- Если ваш продукт поддерживает аудио с малой задержкой, как указано в компакт-диске Android, скопируйте соответствующий XML-файл функций в свой продукт. Например, в
device/<company>/<device>/device.mk
вашего продукта: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 требуются основной аудиомодуль и аудиомодуль Bluetooth HAL:PRODUCT_PACKAGES += \ audio.primary.tuna \ audio.a2dp.default