Настройка общей библиотеки

После создания конфигурации политики аудио необходимо упаковать реализацию 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, скопируйте соответствующий 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 \
    

  4. Скопируйте созданный ранее файл конфигурации политики аудио в каталог system/etc/ в Makefile вашего продукта device/<company>/<device>/device.mk . Например:
    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 требуются основной аудиомодуль и аудиомодуль Bluetooth HAL:
    PRODUCT_PACKAGES += \
            audio.primary.tuna \
            audio.a2dp.default