Cómo configurar una biblioteca compartida

Después de crear un política de audio , debes empaquetar la implementación de HAL en una biblioteca compartida. y cópialo en la ubicación correspondiente:

  1. Crea un device/<company>/<device>/audio para que contenga los archivos de origen de la biblioteca.
  2. Crea un archivo Android.mk para compilar la biblioteca compartida. Asegúrate de que el Makefile contiene la siguiente línea:
    LOCAL_MODULE := audio.primary.<device>
    

    El nombre de tu biblioteca debe ser audio.primary.<device>.so. para que Android pueda cargar correctamente la biblioteca. La porción primary de este nombre de archivo indica que esta biblioteca compartida es para el audio principal hardware ubicado en el dispositivo. Los nombres de los módulos audio.a2dp.<device> y audio.usb.<device> también están disponibles para Bluetooth y Interfaces de audio USB Este es un ejemplo de un Android.mk del Hardware de audio de 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. Si tu producto admite audio de baja latencia según lo especificado en el CDD de Android, copia el archivo XML de funciones correspondiente en tu producto. Por ejemplo, en tu device/<company>/<device>/device.mk del producto Archivo 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 \
    

  4. Copia el archivo de configuración de la política de audio que creaste anteriormente en el system/etc/ en el directorio de tu producto Archivo makefile de device/<company>/<device>/device.mk. Por ejemplo:
    PRODUCT_COPY_FILES += \
            device/samsung/tuna/audio/audio_policy.conf:system/etc/audio_policy.conf
    

  5. Declara los módulos compartidos de la HAL de audio que requiere tu producto en la lista Archivo Make device/<company>/<device>/device.mk. Por ejemplo, el Galaxy Nexus requiere la HAL de audio principal y la de Bluetooth módulos:
    PRODUCT_PACKAGES += \
            audio.primary.tuna \
            audio.a2dp.default