共有ライブラリの構成

オーディオ ポリシー構成の作成後は、HAL 実装を共有ライブラリにパッケージ化し、次のように適切な場所にコピーする必要があります。

  1. ライブラリのソースファイルを含む device/<company>/<device>/audio ディレクトリを作成します。
  2. Android.mk ファイルを作成して、共有ライブラリをビルドします。Makefile に次の記述が含まれていることを確認します。
    LOCAL_MODULE := audio.primary.<device>
    

    Android でライブラリを正しくロードできるように、ライブラリの名前は audio.primary.<device>.so とします。ファイル名の primary という部分は、この共有ライブラリがデバイスのプライマリ オーディオ ハードウェア用であることを示します。モジュール名 audio.a2dp.<device>audio.usb.<device> は、Bluetooth および USB オーディオ インターフェースでも使用されます。Android.mk に関する 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. 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 \
    

  4. 作成済みのオーディオ ポリシー構成ファイルを、デバイスの device/<company>/<device>/device.mk Makefile の system/etc/ ディレクトリにコピーします。次に例を示します。
    PRODUCT_COPY_FILES += \
            device/samsung/tuna/audio/audio_policy.conf:system/etc/audio_policy.conf
    

  5. デバイスの device/<company>/<device>/device.mk Makefile で、必要となるオーディオ HAL の共有モジュールを宣言します。 たとえば、Galaxy Nexus では、次のようにプライマリおよび Bluetooth オーディオ HAL モジュールが必要となります。
    PRODUCT_PACKAGES += \
            audio.primary.tuna \
            audio.a2dp.default