Configurer une bibliothèque partagée

Après avoir créé règle audio configuration, vous devez empaqueter l'implémentation HAL dans une bibliothèque partagée et copiez-le à l'emplacement approprié:

  1. Créer un device/<company>/<device>/audio contenant les fichiers sources de votre bibliothèque.
  2. Créez un fichier Android.mk pour créer la bibliothèque partagée. Assurez-vous que Makefile contient la ligne suivante:
    LOCAL_MODULE := audio.primary.<device>
    

    Votre bibliothèque doit être nommée audio.primary.<device>.so afin qu'Android puisse charger correctement la bibliothèque. La partie primary de Ce nom de fichier indique que cette bibliothèque partagée est destinée au contenu audio principal matériel situé sur l'appareil. Les noms des modules audio.a2dp.<device> et audio.usb.<device> sont également disponibles pour les connexions Bluetooth et Interfaces audio USB Voici un exemple de Android.mk Matériel audio 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. Si votre produit prend en charge l'audio à faible latence comme spécifié par le CDD Android, Copiez le fichier de caractéristiques XML correspondant dans votre produit. Par exemple, dans votre device/<company>/<device>/device.mk du produit 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. Copiez le fichier de configuration de la règle audio que vous avez créé précédemment dans le Répertoire system/etc/ dans le répertoire device/<company>/<device>/device.mk. Exemple :
    PRODUCT_COPY_FILES += \
            device/samsung/tuna/audio/audio_policy.conf:system/etc/audio_policy.conf
    

  5. Déclarez les modules partagés de votre HAL audio requis par votre produit dans le device/<company>/<device>/device.mk Makefile. Par exemple, le Galaxy Nexus nécessite l'accès principal et le HAL audio Bluetooth. modules:
    PRODUCT_PACKAGES += \
            audio.primary.tuna \
            audio.a2dp.default