После создания конфигурации аудио-политики необходимо упаковать реализацию 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 CDD, скопируйте соответствующий XML-файл в свой продукт. Например, в make-файле
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/
в make-файлеdevice/<company>/<device>/device.mk
вашего продукта. Например:PRODUCT_COPY_FILES += \ device/samsung/tuna/audio/audio_policy.conf:system/etc/audio_policy.conf
- Объявите общие модули вашего аудио HAL, необходимые вашему продукту, в файле makefile
device/<company>/<device>/device.mk
продукта. Например, для Galaxy Nexus требуются основной аудиомодуль HAL и Bluetooth-модуль:PRODUCT_PACKAGES += \ audio.primary.tuna \ audio.a2dp.default