After creating an audio policy configuration, you must package the HAL implementation into a shared library and copy it to the appropriate location:
device/<company>/<device>/audio
directory to contain your library's source files.Android.mk
file to build the shared library. Ensure
the Makefile contains the following line:
LOCAL_MODULE := audio.primary.<device>
Your library must be named audio.primary.<device>.so
so Android can correctly load the library. The primary
portion of
this filename indicates that this shared library is for the primary audio
hardware located on the device. The module names
audio.a2dp.<device>
and
audio.usb.<device>
are also available for Bluetooth and
USB audio interfaces. Here is an example of an Android.mk
from the
Galaxy Nexus audio hardware:
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)
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 \
system/etc/
directory in your product's
device/<company>/<device>/device.mk
Makefile.
For example:
PRODUCT_COPY_FILES += \ device/samsung/tuna/audio/audio_policy.conf:system/etc/audio_policy.conf
device/<company>/<device>/device.mk
Makefile.
For example, the Galaxy Nexus requires the primary and Bluetooth audio HAL
modules:
PRODUCT_PACKAGES += \ audio.primary.tuna \ audio.a2dp.default