Configurare una raccolta condivisa

Dopo aver creato una configurazione delle norme relative all'audio, devi pacchettizzare l'implementazione HAL in una libreria condivisa e copiarla nella posizione appropriata:

  1. Crea una directory device/<company>/<device>/audio per contenere i file di origine della libreria.
  2. Crea un file Android.mk per compilare la libreria condivisa. Assicurati che il file Makefile contenga la seguente riga:
    LOCAL_MODULE := audio.primary.<device>
    

    La libreria deve avere il nome audio.primary.<device>.so in modo che Android possa caricarla correttamente. La parte primary di questo nome file indica che questa raccolta condivisa è destinata all'hardware audio principale situato sul dispositivo. I nomi dei moduli audio.a2dp.<device> e audio.usb.<device> sono disponibili anche per le interfacce audio Bluetooth e USB. Ecco un esempio di Android.mk dall'hardware audio di 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. Se il tuo prodotto supporta l'audio a bassa latenza come specificato dal CDD di Android, copia il file delle funzionalità XML corrispondente nel tuo prodotto. Ad esempio, nel device/<company>/<device>/device.mk Makefile del tuo prodotto:
    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. Copia il file di configurazione dei criteri audio che hai creato in precedenza nella directory system/etc/ nel file Makefile system/etc/ del tuo prodotto.device/<company>/<device>/device.mk Ad esempio:
    PRODUCT_COPY_FILES += \
            device/samsung/tuna/audio/audio_policy.conf:system/etc/audio_policy.conf
    

  5. Dichiara i moduli condivisi dell'HAL audio richiesti dal prodotto nel device/<company>/<device>/device.mk Makefile del prodotto. Ad esempio, Galaxy Nexus richiede i moduli HAL audio principali e Bluetooth:
    PRODUCT_PACKAGES += \
            audio.primary.tuna \
            audio.a2dp.default