오디오 정책 구성을 만든 후 HAL 구현을 공유 라이브러리에 패키징하고, 이를 적절한 위치에 복사해야 합니다.
- 라이브러리의 소스 파일을 포함할
device/<company>/<device>/audio
디렉터리를 생성합니다. Android.mk
파일을 생성하여 공유 라이브러리를 빌드합니다. Makefile에 다음 줄이 있는지 확인합니다.LOCAL_MODULE := audio.primary.<device>
라이브러리의 이름이
audio.primary.<device>.so
이어야 Android가 라이브러리를 올바르게 로드할 수 있습니다. 이 파일 이름의primary
부분은 기기에 있는 기본 오디오 하드웨어의 공유 라이브러리임을 나타냅니다.audio.a2dp.<device>
및audio.usb.<device>
라는 모듈 이름은 블루투스 및 USB 오디오 인터페이스에서도 사용할 수 있습니다. 다음은 Galaxy Nexus 오디오 하드웨어의Android.mk
예시입니다.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)
- 제품이 Android CDD에서 지정한 지연 시간이 짧은 오디오를 지원하는 경우 상응하는 XML 기능 파일을 제품으로 복사합니다. 예를 들어 제품의
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 \
- 앞에서 만든 오디오 정책 구성 파일을 제품의
device/<company>/<device>/device.mk
Makefile에 있는system/etc/
디렉터리로 복사합니다. 예:PRODUCT_COPY_FILES += \ device/samsung/tuna/audio/audio_policy.conf:system/etc/audio_policy.conf
- 제품의
device/<company>/<device>/device.mk
Makefile에서 제품에 필요한 오디오 HAL의 공유 모듈을 선언합니다. 예를 들어 Galaxy Nexus에는 다음과 같은 기본 및 블루투스 오디오 HAL 모듈이 필요합니다.PRODUCT_PACKAGES += \ audio.primary.tuna \ audio.a2dp.default