يتضمّن إصدار Android 10 عملية إعادة هيكلة لمدير سياسات
الصوت لتوفير مزيد من المرونة لدعم حالات استخدام السيارات المعقدة:
استراتيجيات التوجيه الخاصة بالمصنّعين الأصليين للأجهزة
مجموعات قابلة للتخصيص لمستوى الصوت لمجموعات أنواع البث القديمة باستخدام منحنيات مستوى الصوت نفسها
استراتيجيات التوجيه التي يعلن عنها محرّك سياسة الصوت بدلاً من تضمينها في الرمز البرمجي
منحنيات الصوت والمجموعات التي تديرها آلية سياسة الصوت
إعادة صياغة داخلية للتحضير لعملية تقسيم مستقبلية بين الرمز البرمجي الشائع والرمز البرمجي القابل للضبط،
وتوفير إدارة أفضل لأجهزة الصوت على سبيل المثال، استخدام جميع خصائص الجهاز وليس نوعه فقط في قواعد السياسات.
قدّم نظام Android 7.0 تنسيق ملف إعداد سياسة الصوت (XML)
لوصف المخطط الصوتي.
كانت إصدارات Android السابقة تتطلّب استخدام ملف device/<company>/<device>/audio/audio_policy.conf
للإبلاغ عن أجهزة الصوت المتوفّرة في منتجك (يمكنك الاطّلاع على مثال على
هذا الملف لأجهزة الصوت في Galaxy Nexus في
device/samsung/tuna/audio/audio_policy.conf). ومع ذلك، فإنّ ملف CONF هو ملف
بسيط وملكية خاصة، وهو محدود جدًا لوصف التصاميم المعقدة لمجالات محددة، مثل أجهزة التلفزيون والسيارات.
أوقف نظام التشغيل Android 7.0 audio_policy.conf نهائيًا ووفّر إمكانية تحديد طوبولوجيا صوتية باستخدام تنسيق ملف XML الذي يمكن للمستخدمين قراءته، كما يتضمّن مجموعة كبيرة من أدوات التعديل والتحليل، وهو مرن بما فيه الكفاية لوصف طوبولوجيا صوتية معقّدة. يستخدم Android 7.0
علامة الإصدار USE_XML_AUDIO_POLICY_CONF لاختيار تنسيق XML
لملفات الإعداد.
مزايا تنسيق XML
وكما هو الحال في ملف CONF، يتيح ملف XML تحديد عدد وأنواع الملفات الشخصية لإخراج البث والإدخال، والأجهزة القابلة للاستخدام للتشغيل والالتقاط، وسمات الصوت. بالإضافة إلى ذلك، يوفّر تنسيق XML التحسينات التالية:
في نظام التشغيل Android 10، يُسمح باستخدام أكثر من تطبيق تسجيل نشِط واحد
في الوقت نفسه.
لا يتم رفض بدء التسجيل مطلقًا بسبب تعارض في المهام.
تُبلِغ عملية معاودة الاتصال registerAudioRecordingCallback(AudioManager.AudioRecordingCallback cb) العملاء بالتغييرات في مسار الالتقاط.
في الحالات التالية، يحصل العميل على عيّنات صوتية صامتة:
هناك حالة استخدام تراعي الخصوصية (مثل VOICE_COMMUNICATION) نشطة.
لا يحتوي العميل على خدمة تعمل في المقدّمة أو واجهة مستخدم تعمل في المقدّمة.
تتعرّف السياسة على الأدوار الخاصة:
خدمة تسهيل الاستخدام: يمكنها التسجيل حتى إذا كانت حالة استخدام حسّاسة للخصوصية نشطة.
"مساعد Google": يُعتبَر هذا التطبيق حسّاسًا من حيث الخصوصية إذا كانت واجهة المستخدم في أعلى الشاشة.
تتضمّن الملفات الصوتية بنية مشابهة لملفّات وصف الصوت البسيطة في HDMI، ما يتيح استخدام مجموعة مختلفة
من معدّلات أخذ العينات/أقنعة القنوات لكل تنسيق صوتي.
تتوفّر تعريفات واضحة لجميع عمليات الربط المحتملة بين الأجهزة ومصادر البيانات.
في السابق، كانت هناك قاعدة ضمنية تتيح توصيل جميع الأجهزة المرتبطة بوحدة HAL
المعينة، ما يمنع سياسة الصوت من التحكّم في عمليات الربط المطلوبة باستخدام واجهات برمجة التطبيقات
لإصلاح الصوت. في تنسيق XML، يحدِّد وصف الشبكة الطوبولوجية قيود الاتصال.
إنّ ميزة التضمين تتجنّب تكرار تعريفات A2DP أو USB أو إعادة توجيه الإرسال
المعيارية.
تكون منحنيات الحجم قابلة للتخصيص. في السابق، كانت جداول الوحدات تخضع لرمز ثابت. بتنسيق XML، يتم وصف جداول مستوى الصوت ويمكن تخصيصها.
يعرض النموذج الموجود في
frameworks/av/services/audiopolicy/config/audio_policy_configuration.xml
العديد من هذه الميزات قيد الاستخدام.
تنسيق الملف وموقعه
ملف الإعداد الجديد لسياسة الصوت هو
audio_policy_configuration.xml ويمكن العثور عليه في
/system/etc. تعرض الأمثلة التالية ضبطًا بسيطًا لسياسة الصوت بتنسيق ملف XML لنظام التشغيل Android 12 والإصدارات الأقدم منه.
تحتوي بنية المستوى الأعلى على وحدات تتوافق مع كل وحدة أجهزة HAL
للصوت، حيث تحتوي كل وحدة على قائمة بمنافذ المزيج ومنافذ الجهاز
والمسارات:
تصف منافذ المزج الملفات الشخصية المحتملة للإعدادات الخاصة بالبث
التي يمكن فتحها في HAL الصوتي لتشغيل المحتوى وتسجيله.
تصف منافذ الجهاز الأجهزة التي يمكن ربطها مع
نوعها (وخصائص العنوان والصوت اختياريًا، إذا كان ذلك منطبقًا).
يتم فصل المسارات عن وصف منفذ المزيج،
ما يتيح وصف المسارات من جهاز إلى جهاز أو من مصدر البث إلى جهاز.
جداول مستوى الصوت هي قوائم بسيطة من النقاط التي تحدّد المنحنى المستخدَم للترجمة
من فهرس واجهة المستخدم إلى مستوى الصوت بوحدة ديسيبل. يقدّم ملف تضمين منفصل منحنيات
تلقائية، ولكن يمكن
استبدال كل منحنى لحالة استخدام وفئة جهاز معيّنة.
يمكن استخدام طريقة "إدراج XML" (XInclude) لتضمين معلومات إعدادات ملف سياسة الصوت
الموجودة في ملفات XML أخرى. يجب أن تتبع جميع الملفات المضمنة البنية الموضحة أعلاه مع القيود التالية:
يمكن أن تحتوي الملفات على العناصر ذات المستوى الأعلى فقط.
لا يمكن أن تحتوي الملفات على عناصر XInclude.
تشمل الاستخدامات تجنُّب نسخ معلومات إعدادات وحدة HAL لصوت مشروع Android Open Source Project (AOSP) النموذجي إلى جميع ملفات إعدادات سياسة الصوت (التي تكون عرضة للأخطاء). ملف XML عادي لإعداد سياسة الصوت
يتوفر لحِزم HAL الصوتية التالية:
A2DP:a2dp_audio_policy_configuration.xml
إعادة توجيه المزيج الفرعي:rsubmix_audio_policy_configuration.xml
USB:usb_audio_policy_configuration.xml
تنظيم رمز سياسة الصوت
تم تقسيم AudioPolicyManager.cpp إلى عدة وحدات
لتسهيل صيانتها وضبطها. تتضمّن بنية
frameworks/av/services/audiopolicy
الوحدات التالية.
الوحدة
الوصف
/managerdefault
تتضمن الواجهات العامة وتنفيذ السلوك المشترك بين جميع التطبيقات. يشبه AudioPolicyManager.cpp مع وظائف المحرك
والمفاهيم الشائعة التي تمّت إزالتها.
/common
تحدِّد الفئات الأساسية (على سبيل المثال، هياكل البيانات لملفات تعريف تدفق الصوت المُدخل والمُخرج
، وأوصاف أجهزة الصوت، وتعديلات الصوت، ومنافذ الصوت). كان هذا الخيار سابقًا
محددًا في AudioPolicyManager.cpp.
/engine
تنفيذ القواعد التي تحدِّد الأجهزة والأحجام التي يجب استخدامها في
حالة استخدام معيّنة وتنفِّذ واجهة قياسية مع الجزء العام، مثل
الحصول على الجهاز المناسب لحالة استخدام معيّنة لتشغيل المحتوى أو تسجيله، أو لتحديد
الأجهزة المتصلة أو الحالة الخارجية (أي حالة الاتصال للاستخدام القسري) التي يمكن أن تؤدي
إلى تغيير قرار التوجيه.
تنفيذ محرّك بحث السياسات الذي يعتمد على إطار عمل المَعلمات (انظر أدناه)
يستند الإعداد إلى إطار عمل المَعلمات وإلى المكان الذي يتم فيه تحديد السياسة
باستخدام ملفات XML.
/enginedefault
عملية تنفيذ محرّك السياسات استنادًا إلى عمليات التنفيذ السابقة لبرنامج "مدير سياسة الصوت في Android" وهذا هو الإعداد التلقائي ويتضمن القواعد غير القابلة للتغيير
التي تتوافق مع عمليات تنفيذ Nexus وAOSP.
/service
يتضمّن واجهات الربط وعمليات إنشاء المواضيع وتنفيذ عمليات القفل باستخدام
واجهة مع بقية إطار العمل.
الإعداد باستخدام إطار عمل المَعلمات
تم تنظيم رمز سياسة الصوت لتسهيل فهمه والحفاظ عليه
مع إتاحة سياسة صوتية محددة بالكامل من خلال ملفات
الإعداد. يستند تصميم سياسة الصوت والمؤسسة إلى "إطار عمل المَعلمات" من Intel، وهو إطار عمل يستند إلى المكوّنات الإضافية والقواعد لمعالجة المَعلمات.
يتيح استخدام سياسة الصوت القابلة للضبط لمصنّعي المعدّات الأصلية ما يلي:
وصف بنية النظام ومَعلماته بتنسيق XML
يمكنك الكتابة (في C++) أو إعادة استخدام خلفية (مكوّن إضافي) للوصول إلى المعلمات الموصوفة.
حدِّد (بتنسيق XML أو بلغة خاصة بالمجال) الشروط أو القواعد التي يجب أن تستند إليها
مَعلمة معيّنة لاتخاذ قيمة معيّنة.
يتضمّن AOSP مثالاً على ملف إعداد سياسة صوتية يستخدم "إطار عمل المعلَمات" في Frameworks/av/services/audiopolicy/engineconfigurable/parameter-framework/example/Settings/PolicyConfigurableDomains.xml. للاطّلاع على
التفاصيل، يُرجى الرجوع إلى مستندات Intel حول
إطار عمل المَعلمات.
في الإصدار 10 من نظام التشغيل Android أو الإصدارات الأقدم، يتم اختيار سياسة الصوت القابلة للضبط
باستخدام خيار الإصدار USE_CONFIGURABLE_AUDIO_POLICY.
في الإصدار 11 من نظام التشغيل Android أو الإصدارات الأحدث، يتم اختيار إصدار محرك
سياسة الصوت في ملف audio_policy_configuration.xml.
لاختيار محرّك سياسة الصوت القابل للضبط، اضبط قيمة سمة engine_library
لعنصر globalConfiguration على configurable
كما هو موضّح في المثال التالي:
طرح نظام التشغيل Android 6.0 واجهة برمجة تطبيقات عامة لتحديد واختيار الأجهزة تستند إلى البنية الأساسية لوحدة التحكّم في الصوت/منفذ الصوت، وتسمح لمطوّري التطبيقات بتحديد جهاز مفضّل لإخراج أو إدخال محتوى صوتي مرتبط.
في Android 7.0، يتم التحقّق من واجهة برمجة التطبيقات Enumeration and Selection API من خلال اختبارات CTS
وتتم إتاحتها لتضمين توجيه أحداث الصوت في بث C/C++ الأصلي (OpenSL ES).
لا يزال يتم توجيه أحداث البث الأصلية في Java، مع إضافة واجهة AudioRouting تحلّ محلّ وتجمع وتوقّف نهائيًا
طرق التوجيه الصريحة التي كانت خاصة بفئة AudioTrack وAudioRecord.
للحصول على تفاصيل حول Enumeration and Selection API، راجِع واجهات إعداد Android وOpenSLES_AndroidConfiguration.h.
لمعرفة تفاصيل عن توجيه الصوت، يُرجى الرجوع إلى
AudioRouting.
دعم قنوات متعددة
إذا كان الجهاز وبرنامج التشغيل يتيحان الصوت متعدد القنوات عبر HDMI، يمكنك إخراج البث الصوتي مباشرةً إلى جهاز الصوت (هذا يؤدي إلى استبعاد أداة مزج الصوت كي لا يتم مزجه مع قناتين). يجب أن يعرض ملف HAL الصوتي
ما إذا كان الملف الشخصي لبث الإخراج متوافقًا مع إمكانات الصوت
المتعددة القنوات. إذا كان HAL يعرض إمكاناته، يسمح مدير السياسات التلقائي
بتشغيل المحتوى المتعدّد القنوات عبر HDMI. للاطّلاع على تفاصيل التنفيذ، يُرجى مراجعة
device/samsung/tuna/audio/audio_hw.c.
لتحديد أنّ منتجك يتضمّن إخراجًا صوتيًا متعدّد القنوات، عدِّل
ملف ضبط سياسة الصوت لوصف الناتج المتعدّد القنوات الخاص بمنتجك. يوضّح المثال التالي من
frameworks/av/services/audiopolicy/config/primary_audio_policy_configuration_tv.xml
قناع قناة ديناميكي، ما يعني أنّ مدير السياسة الصوتية يطلب البحث عن
الأقنعة المتوافقة مع حوض HDMI بعد الاتصال.
يمكنك أيضًا تحديد قناع قناة ثابت مثل
AUDIO_CHANNEL_OUT_5POINT1. يُجري أداة خلط الصوت AudioFlinger عملية تقليل كثافة
المحتوى إلى صوت استيريو تلقائيًا عند إرساله إلى جهاز صوتي لا يسمح
بتشغيل الصوت المتعدّد القنوات.
برامج ترميز الوسائط
تأكَّد من أنّ برامج ترميز الصوت التي تتيحها الأجهزة وبرامج التشغيل مُعلَن عنها بشكلٍ سليم
لمنتجاتك. لمعرفة التفاصيل، يُرجى الاطّلاع على مقالة إتاحة برامج الترميز لإطار العمل.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2024-11-08 (حسب التوقيت العالمي المتفَّق عليه)
[null,null,["تاريخ التعديل الأخير: 2024-11-08 (حسب التوقيت العالمي المتفَّق عليه)"],[],[]]