ضبط مكتبة مشتركة

بعد إنشاء إعدادات سياسة الصوت، عليك تجميع تنفيذ HAL في مكتبة مشترَكة ونسخها إلى الموقع المناسب:

  1. أنشئ device/<company>/<device>/audio مجلدًا يحتوي على ملفات مصدر مكتبتك.
  2. أنشئ ملف Android.mk لإنشاء المكتبة المشتركة. تأكَّد من أنّملف Makefile يحتوي على السطر التالي:
    LOCAL_MODULE := audio.primary.<device>
    

    يجب أن يكون اسم مكتبتك audio.primary.<device>.so لكي يتمكّن Android من تحميل المكتبة بشكل صحيح. يشير الجزء primary من اسم الملف هذا إلى أنّ هذه المكتبة المشترَكة مخصّصة لجهاز المعالجة المتقدّمة للصوت الرئيسي على الجهاز. تتوفر أيضًا أسماء الوحدات audio.a2dp.<device> و audio.usb.<device> لواجهات الصوت عبر البلوتوث و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. إذا كان منتجك يتيح تشغيل الصوت بوقت استجابة منخفض كما هو محدّد في CDD لنظام التشغيل Android، انسخ ملف ميزة 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. انسخ ملف ضبط سياسة الصوت الذي أنشأته سابقًا إلى الدليل system/etc/ فيملف Makefile الخاص بملف device/<company>/<device>/device.mk المنتج. مثلاً:
    PRODUCT_COPY_FILES += \
            device/samsung/tuna/audio/audio_policy.conf:system/etc/audio_policy.conf
    

  5. يمكنك تحديد الوحدات المشتركة لواجهة HAL للصوت التي يتطلبها المنتج فيملف سازنده device/<company>/<device>/device.mk الخاص بالمنتج. على سبيل المثال، يتطلب هاتف Galaxy Nexus وحدتَي HAL الأساسية وصوت البلوتوث:
    PRODUCT_PACKAGES += \
            audio.primary.tuna \
            audio.a2dp.default