Configurer une bibliothèque partagée

Après avoir créé une configuration de politique audio , vous devez regrouper l'implémentation HAL dans une bibliothèque partagée et la copier à l'emplacement approprié :

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

    Votre bibliothèque doit être nommée audio.primary.<device>.so pour 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 matériel audio principal situé sur l'appareil. Les noms de module audio.a2dp.<device> et audio.usb.<device> sont également disponibles pour les interfaces audio Bluetooth et USB. Voici un exemple d' Android.mk du 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 fonction XML correspondant dans votre produit. Par exemple, dans le device/<company>/<device>/device.mk de votre produit :
    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 politique audio que vous avez créé précédemment dans le répertoire system/etc/ du fichier device/<company>/<device>/device.mk de votre produit. Par 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 du produit. Par exemple, le Galaxy Nexus nécessite les modules HAL audio principal et Bluetooth :
    PRODUCT_PACKAGES += \
            audio.primary.tuna \
            audio.a2dp.default