Configuración de una biblioteca compartida

Después de crear una configuración de política de audio , debe empaquetar la implementación de HAL en una biblioteca compartida y copiarla en la ubicación adecuada:

  1. Cree un directorio device/<company>/<device>/audio para contener los archivos fuente de su biblioteca.
  2. Cree un archivo Android.mk para compilar la biblioteca compartida. Asegúrese de que el Makefile contenga la siguiente línea:
    LOCAL_MODULE := audio.primary.<device>
    

    Su biblioteca debe llamarse audio.primary.<device>.so que Android pueda cargar la biblioteca correctamente. La parte primary de este nombre de archivo indica que esta biblioteca compartida es para el hardware de audio principal ubicado en el dispositivo. Los nombres de módulo audio.a2dp.<device> y audio.usb.<device> también están disponibles para las interfaces de audio Bluetooth y USB. Aquí hay un ejemplo de un Android.mk del hardware de audio 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 su producto admite audio de baja latencia según lo especificado por la CDD de Android, copie el archivo de función XML correspondiente en su producto. Por ejemplo, en el 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 \
    

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

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