Después de crear una configuración de política de audio, debes empaquetar la implementación de HAL en una biblioteca compartida y copiarla en la ubicación adecuada:
- Crea un directorio
device/<company>/<device>/audio
para que contenga los archivos de origen de tu biblioteca. - Crea un archivo
Android.mk
para compilar la biblioteca compartida. Asegúrate de que el archivo Makefile contenga la siguiente línea:
LOCAL_MODULE := audio.primary.<device>
Tu biblioteca debe llamarse
audio.primary.<device>.so
para que Android pueda cargarla correctamente. La parteprimary
de este nombre de archivo indica que esta biblioteca compartida es para el hardware de audio principal ubicado en el dispositivo. Los nombres de los módulosaudio.a2dp.<device>
yaudio.usb.<device>
también están disponibles para las interfaces de audio Bluetooth y USB. Este es un ejemplo de unAndroid.mk
del hardware de audio del 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)
- Si tu producto admite audio de baja latencia, como lo especifica el CDD de Android, copia el archivo de funciones XML correspondiente en tu producto. Por ejemplo, en el archivo Makefile
device/<company>/<device>/device.mk
de tu producto: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 \
- Copia el archivo de configuración de la política de audio que creaste antes al directorio
system/etc/
en el archivo makefiledevice/<company>/<device>/device.mk
de tu producto. Por ejemplo:PRODUCT_COPY_FILES += \ device/samsung/tuna/audio/audio_policy.conf:system/etc/audio_policy.conf
- Declara los módulos compartidos de tu HAL de audio que requiere tu producto en el archivo makefile
device/<company>/<device>/device.mk
del producto. Por ejemplo, el Galaxy Nexus requiere los módulos HAL de audio principal y Bluetooth:PRODUCT_PACKAGES += \ audio.primary.tuna \ audio.a2dp.default