Konfigurieren Sie eine gemeinsam genutzte Bibliothek

Nachdem Sie eine Audiorichtlinienkonfiguration erstellt haben, müssen Sie die HAL-Implementierung in eine gemeinsam genutzte Bibliothek packen und an den entsprechenden Speicherort kopieren:

  1. Erstellen Sie ein Verzeichnis device/<company>/<device>/audio “, das die Quelldateien Ihrer Bibliothek enthält.
  2. Erstellen Sie eine Android.mk -Datei, um die gemeinsam genutzte Bibliothek zu erstellen. Stellen Sie sicher, dass das Makefile die folgende Zeile enthält:
    LOCAL_MODULE := audio.primary.<device>
    

    Ihre Bibliothek muss den Namen audio.primary.<device>.so , damit Android die Bibliothek korrekt laden kann. Der primary Teil dieses Dateinamens gibt an, dass diese gemeinsam genutzte Bibliothek für die primäre Audiohardware auf dem Gerät bestimmt ist. Die audio.a2dp.<device> und audio.usb.<device> sind auch für Bluetooth- und USB-Audiointerfaces verfügbar. Hier ist ein Beispiel für eine Android.mk von der Galaxy Nexus-Audiohardware:

    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. Wenn Ihr Produkt Audio mit niedriger Latenz unterstützt, wie von der Android CDD angegeben, kopieren Sie die entsprechende XML-Funktionsdatei in Ihr Produkt. Zum Beispiel in der device/<company>/<device>/device.mk Ihres Produkts:
    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. Kopieren Sie die zuvor erstellte Audiorichtlinien-Konfigurationsdatei in das Verzeichnis system/etc/ im Makefile Ihres Produkts „ device/<company>/<device>/device.mk . Zum Beispiel:
    PRODUCT_COPY_FILES += \
            device/samsung/tuna/audio/audio_policy.conf:system/etc/audio_policy.conf
    

  5. Deklarieren Sie die gemeinsam genutzten Module Ihrer Audio-HAL, die von Ihrem Produkt benötigt werden, im makefile des Produkts device/<company>/<device>/device.mk . Zum Beispiel erfordert das Galaxy Nexus die primären und Bluetooth-Audio-HAL-Module:
    PRODUCT_PACKAGES += \
            audio.primary.tuna \
            audio.a2dp.default