في Android 14، يستفيد نظام التشغيل Android Automotive (AAOS) من محرك إدارة الصوت في السيارة المزوّد بميزة "سياسة الصوت القابلة للضبط" (CAP) ضمن منطقة الصوت primary. على وجه التحديد، يسمح محرّك CAP لنظام التشغيل AAOS بالتحكم في توجيه المقطع الصوتي فقط أو مستوى صوته فقط أو في كلٍّ من التوجيه ومستوى الصوت في الوقت نفسه. يمكن استخدام العلامات التالية للتحكّم في السلوك:
استخدِم العلامة
useCoreAudioVolume
لتفعيل إدارة حجم CAP. عندما تكون هذه القيمة هيtrue
، تستخدِم خدمة الصوت في السيارة واجهات برمجة تطبيقات "مدير الصوت" لإدارة مجموعات مستوى الصوت.استخدِم العلامة
useCoreAudioRouting
لتفعيل إدارة توجيه الصوت في CAP. عندما تكون هذه القيمة هيtrue
، تستخدِم خدمة الصوت في السيارة توجيه سياسة الصوت القابل للضبط لإدارة توجيه الصوت.
يتوفّر محرّك سياسة الصوت أيضًا في Android تلقائيًا في شكل محرّك سياسة الصوت التلقائي.
الخلفية
يستند محرّك CAP إلى إطار عمل المَعلمات من Intel، وهو إطار عمل يستند إلى المكوّنات الإضافية والقواعد لمعالجة المَعلمات. بالنسبة إلى إدارة الصوت في Android على وجه الخصوص، وفّر محرّك CAP إمكانية تحديد قواعد ملفات XML لتحديد ما يلي:
- استراتيجية المنتجات الصوتية
- قواعد اختيار جهاز إخراج الصوت
- قواعد اختيار جهاز إدخال الصوت
- قواعد لإدارة مستوى الصوت وكتمه بالإضافة إلى جداول مستوى الصوت
إعداد CAP قبل Android 16
يعرض الشكل التالي نظرة عامة عالية المستوى على إدارة إعدادات محرك سياسة الصوت القابلة للضبط اعتبارًا من Android 6:
الشكل 1: إدارة إعدادات محرّك CAP اعتبارًا من Android 6
كما هو موضّح في الشكل، يتم الحصول على إعدادات محرّك CAP
من خلال خدمة سياسة الصوت
عن طريق تحليل المعلومات من audio_policy_engine_configuration.xml
الملف
في قسم vendor
. يستخدم ملف إعدادات محرّك CAP
المخطّط المحدّد في audio_policy_engine_configuration.xsd
للحصول على المعلومات المطلوبة. audio_policy_engine_configuration.xml
هو مثال على فئة السيارات. يمكن العثور على أمثلة مشابهة لأشكال الأجهزة الأخرى في ملف
frameworks/av/services/audiopolicy/engineconfigurable/config/example/.
يعرض الشكل التالي معلومات أكثر تفصيلاً حول كيفية تحميل معلومات محرك سياسة الصوت القابلة للضبط ضمن خدمة سياسة الصوت. في هذه الحالة، يحمِّل إطار عمل المَعلمات البنية والإعدادات من ملفات XML.
الشكل 2: يتم تحميل معلومات CAP ضمن خدمة سياسة الصوت.
ملفّات بنية CAP في الإصدار 15 من نظام التشغيل Android والإصدارات الأقدم
للحصول على البنية والإعدادات، تقرأ خدمة سياسة الصوتملف ParameterFrameworkConfigurationPolicy.xml
. يشير ذلك إلى
معلومات البنية من خلال موقع ملف وصف البنية:
<StructureDescriptionFileLocation Path="Structure/Policy/PolicyClass.xml"/>
يشير ذلك إلى معلومات البنية في الملف:
/vendor/etc/parameter-framework/Structure/Policy/PolicyClass.xml
يتم توفير بنية هيكلية في
Android
. تتطلّب معلومات البنية معلومات عن بنية استراتيجية المنتج، لذا يوفّر Android buildStrategiesStructureFile.py
أداة الإنشاء،
التي يمكنها إنشاء معلومات من ملف XML المتاح لاستراتيجية المنتج.
يمكن الإشارة إلى ذلك من خلال
genrule default
buildstrategiesstructurerule
على النحو التالي:
genrule {
name: "buildstrategiesstructure_gen",
defaults: ["buildstrategiesstructurerule"],
srcs: [
":audio_policy_engine_configuration_files",
],
}
حيث يكون audio_policy_engine_configuration_files
هو ملفّات إعدادات
محرّك سياسة الصوت. يشير
هذا المثال على السيارات
إلى ملفات ضبط سياسة الصوت في
مجلد automotive.
توضِّح الأمثلة الأخرى
كيفية ضبط إصدار لإرسال الملفات في قسم
المورّد للجهاز.
ملفات إعدادات CAP في الإصدار 15 من نظام التشغيل Android والإصدارات الأقدم
على غرار البنية، تتم الإشارة إلى معلومات الإعدادات التي تمثّل القواعد
وقيم المَعلمات في ملف
ParameterFrameworkConfigurationPolicy.xml
على النحو التالي:
<SettingsConfiguration>
<ConfigurableDomainsFileLocation Path="Settings/Policy/PolicyConfigurableDomains.xml"/>
</SettingsConfiguration>
يقدّم Android أيضًا أدوات إنشاء لإنشاء هذه المعلومات باستخدام إعدادات محرّك سياسة الصوت وملفات إطار عمل المَعلمات. اطّلِع على الإعدادات للحصول على مزيد من المعلومات.
إعداد واجهة برمجة التطبيقات لإمكانيات الصوت في HAL باستخدام AIDL
بدءًا من الإصدار 16 من نظام التشغيل Android، تم توسيع نطاق تعريف واجهة برمجة التطبيقات AIDL Audio HAL API بإضافة إعدادات محرّك سياسة الصوت، AudioHalCapConfiguration.aidl. يعرض الشكل التالي نظرة عامة على مستوى عالٍ لإدارة إعدادات محرك CAP اعتبارًا من Android 16:
الشكل 3: إدارة إعدادات محرّك CAP اعتبارًا من Android 16
تحصل خدمة سياسة الصوت على معلومات محرّك CAP باستخدام واجهات برمجة التطبيقات AIDL Audio HAL مباشرةً بدلاً من تحليل المعلومات من ملفات XML في ملف "قسم المورّد" على الجهاز.
في هذه الإعدادات، لا يزال محرّك CAP يحمّل بنية إطار عمل المَعلمات من جهة خادم الصوت.
الشكل 4: بنية محرّك CAP
في جميع الحالات، يجب أن تحدّد الإعدادات بالكامل المعلومات المتعلّقة بإستراتيجيات المنتجات ومجموعات الحجم والمعايير.
يعرض الشكل التالي نظرة عامة على مستوى عالٍ لواجهات برمجة التطبيقات AIDL audio HAL API التي تستخدمها خدمة سياسة الصوت للحصول على إعدادات محرك CAP:
الشكل 5. واجهات برمجة التطبيقات لـ HAL للصوت في AIDL
في هذا الإعداد، تحصل خدمة سياسة الصوت على المعلومات التالية من HAL للصوت في AIDL:
- الإعدادات
- الاستراتيجيات
- المجلدات
- المعايير
- الإعدادات
أداة تحميل AIDL Audio HAL التلقائية
لتسهيل عملية الانتقال من HIDL إلى AIDL، يوفّر واجهة HAL التلقائية للصوت بتنسيق AIDL
محمِّل محرك CAP بتنسيق XML.
يمكن للمورّدين استخدام أداة التحميل هذه مباشرةً من خلال توسيع HAL الصوتي باستخدام
HAL الصوتي التلقائي أو الإشارة إلى مكتبة libaudioserviceexampleimpl
.
يستخدم مُحمِّل HAL التلقائي للصوت في AIDL
audio_policy_engine_configuration.xml
للحصول على المعلومات التالية:
- الإعدادات
- الاستراتيجيات
- المجلدات
- المعايير
يتم الحصول على معلومات البنية من ملف PolicyConfigurableDomains.xml
. يكمن الاختلاف الرئيسي عن الآلية السابقة في أنّه يتم أيضًا الحصول على معلومات البنية
من خلال HAL للصوت في AIDL بدلاً من إطار عمل
المَعلمات في خدمة سياسة الصوت.
يمكن للمورّدين استخدام أداة domaingeneratorpolicyrule
لإنشاء النطاقات القابلة للضبط باستخدام المعلومات الواردة من إعدادات محرّك سياسة
الصوت. يمكن استخدام مثال الجهاز الافتراضي Cuttlefish
للسيارات كمرجع.
البنية في إعدادات AIDL
في الإصدار 16 من نظام التشغيل Android والإصدارات الأحدث، تحصل خدمة سياسة الصوت
على معلومات الهيكل من خلال قراءة
ParameterFrameworkConfigurationCap.xml
الملف وتحليله.
ويحصل على المعلومات من ملف وصف البنية على وجه الخصوص:
<StructureDescriptionFileLocation Path="Structure/Policy/CapClass.xml"/>
يُسقط إطار العمل الملفات المطلوبة في مجلد /etc/parameter-framework/
مع المعلومات المطلوبة.
تمثّل البنية المَعلمات التي يجب التحكّم فيها، لذا يجب
الإشارة إليها في الإعدادات أو النطاقات. ولهذا الغرض، يجب أن يستخدم ملف AIDL engine
config اسمًا محدّدًا مسبقًا للمَعلمات. بالنسبة إلى استراتيجية
المنتجات، يتم ضبط البنى في
CapProductStrategies.xml
.
استراتيجيات المنتجات التلقائية
بدءًا من الإعدادات التلقائية المقدَّمة في المحرك التلقائي،
تبدأ استراتيجيات المنتجات بالبادئة STRATEGY_
:
STRATEGY_PHONE
STRATEGY_SONIFICATION
STRATEGY_ENFORCED_AUDIBLE
STRATEGY_ACCESSIBILITY
STRATEGY_SONIFICATION_RESPECTFUL
STRATEGY_MEDIA
STRATEGY_DTMF
STRATEGY_CALL_ASSISTANT
STRATEGY_TRANSMITTED_THROUGH_SPEAKER
تم توفير هذا التنسيق لتسهيل عملية الانتقال من HIDL إلى AIDL في الأجهزة التي كانت تستخدم الاستراتيجيات التلقائية. يؤثر تغيير التنسيق هذا في بعض الملفّات الحالية (مثل PfW وXML) التي يتم استخدامها لمحاولة ضبط المحرّك. على وجه التحديد، يجب تغيير جميع الإشارات إلى استراتيجية المنتج لاستخدام الأسماء الجديدة، على سبيل المثال:
اسم مَعلمة الضبط غير المستندة إلى AIDL |
---|
/Policy/policy/product_strategies/media/device_address
/Policy/policy/product_strategies/media/selected_output_devices/mask
|
اسم مَعلمة إعدادات AIDL |
---|
/Policy/policy/product_strategies/STRATEGY_MEDIA/device_address
/Policy/policy/product_strategies/STRATEGY_MEDIA/selected_output_devices/mask
|
استراتيجيات المنتجات التي يحدّدها المصنّع الأصلي للجهاز
يمنح المحرّك القابل للضبط المصنّعين الأصليّين للأجهزة إمكانية تغيير تعريف استراتيجية
المنتجات. لمواصلة توفير هذه الميزة، يقدّم أيضًا ملف استراتيجية المنتجات CapProductStrategies.xml
40 استراتيجية منتجات قابلة للتوسيع من المورّد من vx_1000
إلى
vx_1039
. يجب أن تبدأ جميع ملحقات المورّدين بالبادئة vx_
وتليها
رقم يمثّل
معرّف استراتيجية المنتج
في تعريف استراتيجية المنتج لـ HAL الصوتي في AIDL. يتم الحصول على بقية التعريفات
(مثل مجموعات سمات الصوت والاسم) من عنصر
AudioHALProductStrategy
في
إعدادات محرّك HAL للصوت.
على غرار استراتيجيات المنتجات التلقائية، يجب أيضًا تعديل مراجع المصنّعين الأصليين للأجهزة التي حدّدها المورّد بين الإعداد غير المستنِد إلى AIDL وإعداد AIDL، على سبيل المثال:
اسم مَعلمة الضبط غير المستندة إلى AIDL |
---|
/Policy/policy/product_strategies/oem_extension_strategy/device_address
/Policy/policy/product_strategies/oem_extension_strategy/selected_output_devices/mask
|
اسم مَعلمة إعدادات AIDL |
---|
/Policy/policy/product_strategies/vx_1037/device_address
/Policy/policy/product_strategies/vx_1037/selected_output_devices/mask
|
استراتيجيات المنتجات
توفّر استراتيجيات المنتجات طريقة لتخصيص طريقة تصنيف أحداث البث الصوتي وتجميعها. يتيح ذلك مرونة أكبر في ضبط إعدادات أجهزة الصوت، بما في ذلك كيفية توجيهها وإدارة مستويات الصوت فيها. يمكن أن تحتوي كل استراتيجية للمنتجات على مجموعة واحدة أو أكثر من مجموعات سمة الصوت التي تحدّد أحداث البث التي يجب ربطها بهذه الاستراتيجية للمنتجات. تتيح مجموعات سمات الصوت هذه نهجًا أكثر دقة لتحديد نوع المحتوى الصوتي، ويمكن أن تكون مزيجًا من الأنواع التالية:
- تصف أنواع الاستخدام سبب تشغيل الصوت (أي الوسائط والإشعارات والمكالمات).
- تصف أنواع نوع المحتوى المحتوى الذي يتم تشغيله (أي الموسيقى أو الكلام أو الفيديو أو الصوت).
- تحدِّد أنواع الإبلاغ السلوك أو الطلبات المختلفة في ما يتعلّق بالبث.
- تتيح أنواع العلامات استخدام
أي قائمة عشوائية لقيم سلاسل المورّدين.
- يجب أن تبدأ كل سلسلة بالرمز
VX_
متبوعًا بسلسلة أبجدية رقمية (على سبيل المثال،VX_OEM
أوVX_NAVIGATION
).
- يجب أن تبدأ كل سلسلة بالرمز
<ProductStrategy name="music" id="1008">
<AttributesGroup streamType="AUDIO_STREAM_MUSIC" volumeGroup="media">
<Attributes> <Usage value="AUDIO_USAGE_MEDIA"/> </Attributes>
<Attributes> <Usage value="AUDIO_USAGE_GAME"/> </Attributes>
<!-- Default product strategy has empty attributes -->
<Attributes></Attributes>
</AttributesGroup>
</ProductStrategy>
يعرض هذا المقتطف مثالاً على استراتيجية منتج مستخدَمة في محاكيات السيارات.
يحتوي على سمتَين صوتيتين تتضمّنان وسيط استخدام الصوت واللعبة على التوالي.
تتطابق استراتيجية المنتج هذه مع
MUSIC
سياق الصوت المستخدَم في خدمة الصوت في السيارة،
ولكن ليس هناك شرط لهذا المطابقة. من بين الأدوات الرئيسية التي توفّرها لخدمة
الشركات المصنّعة للأجهزة التي تستخدم CAP مع Android السماح بمزيد من
التعريفات المرنة لتجميع الصوت.
مجموعات مجلدات
بالإضافة إلى ذلك، يجب أن تحتوي كل مجموعة من سمات الصوت على مجموعة حجم مرتبطة بها.
ترتبط مجموعة مستوى الصوت هذه بأي بث يتطابق مع سمات الصوت
التي تنتمي إلى مجموعة سمات الصوت. يتضمّن مثال استراتيجية المنتجات الموسيقية في
قسم استراتيجيات المنتجات مجموعة الحجم
media
، ويكون تعريف مجموعة حجم الوسائط على النحو التالي:
<volumeGroup>
<name>media</name>
<indexMin>0</indexMin>
<indexMax>40</indexMax>
<volume deviceCategory="DEVICE_CATEGORY_SPEAKER">
<point>0,-2400</point>
<point>33,-1600</point>
<point>66,-800</point>
<point>100,0</point>
</volume>
</volumeGroup>
في هذا التعريف، تحتوي مجموعة الوحدات التخزينية على ما يلي:
- اسم المجموعة
- الحد الأدنى لمؤشر المجموعة
- الحد الأقصى لمؤشر المجموعة
- منحنيات مجموعة الصوت
تحتوي منحنيات مجموعة الصوت على تعيين نقطي بين مؤشر مجموعة الصوت ومقدار زيادة الصوت بالملي بيل. تُستخدَم النقاط المقدَّمة لإجراء تداخل خطي لتحقيق أفضل مكاسب مطابقة عند إدارة مستوى الصوت. يكون منحنى كل مجموعة مستويات صوت مرتبطًا بفئة نوع الجهاز (مثل سماعة الرأس أو مكبّر الصوت أو الوسائط الخارجية).
تدير مجموعة مستوى الصوت مستوى الصوت في أحداث البث التي تشكّل جزءًا من مجموعة سمات الصوت. على سبيل المثال، عند بدء بث يتضمّن سمات صوت تحتوي على موسيقى أو لعبة، يتم استخدام فهرس مستوى الصوت الذي تم ضبطه آخر مرة لمجموعة مستوى صوت الوسائط. في هذه الحالة، يتم اختيار منحنى فئة الجهاز المقابل استنادًا إلى الجهاز المحدّد ويتم ضبط الكسب المقابل عند بدء البث.
الإعدادات
في محرّك CAP، يتم استخدام الإعدادات لتحديد الشروط أو القواعد التي تحدّد كيفية تصرف الصوت. يتم تقييم هذه الإعدادات أثناء التشغيل لاختيار القواعد المناسبة لتطبيقها استنادًا إلى الحالة الحالية لنظام الصوت.
كما هو موضّح في الشكل 5، يحتوي واجهة برمجة التطبيقات على نطاقات متعددة، وهدف كل نطاق هو تقسيم المنطق إلى مشاكل توجيه أصغر لحلّها (على سبيل المثال، الجهاز 1، الجهاز 2).
يحتوي كل نطاق على إعدادات، ولكل إعداد مجموعة من القواعد. يتم وضع القواعد
استنادًا إلى المعايير التي تقدّمها AudioPolicyManager
:
- وضع الصوت
- أجهزة الإدخال والإخراج المتاحة
- عناوين أجهزة الإدخال والإخراج المتاحة
- الاستخدام:
- الوسائط
- التواصل
- يتم التسجيل
- إرساء
- النظام
- صوت نظام HDMI
- الصوت المحيطي المشفَّر
- الرنين مع الاهتزاز
يحتوي كل نطاق على إعدادات تحدّد القواعد التي من المفترض أن تؤثّر في السلوك. يُرجى العِلم أنّ ترتيب الإعدادات مهم، ومن المهم التأكّد من أنّ الإعدادات بالترتيب المطلوب. بعد التحقّق من قواعد أحد الإعدادات، يتم اختيار الإعداد.
يعرض الرمز البرمجي التالي مثالاً على مقتطف من ملف إطار عمل المَعلمات، والذي يمكن استخدامه لإنشاء ملف XML المطلوب لضبط الدومينات القابلة للضبط:
supDomain: DeviceForProductStrategies
supDomain: Music
domain: SelectedDevice
conf: BluetoothA2dp
ForceUseForMedia IsNot NO_BT_A2DP
ForceUseForCommunication IsNot BT_SCO
AvailableOutputDevices Includes BLUETOOTH_A2DP
component:/Policy/policy/product_strategies/vx_1000/selected_output_devices/mask
bluetooth_a2dp = 1
bus = 0
conf: Bus
AvailableOutputDevices Includes Bus
AvailableOutputDevicesAddresses Includes BUS00_MEDIA
component: /Policy/policy/product_strategies/vx_1000/selected_output_devices/mask
bluetooth_a2dp = 0
bus = 1
conf: Default
component: /Policy/policy/product_strategies/vx_1000/selected_output_devices/mask
bluetooth_a2dp = 0
bus = 0
يحدِّد النطاق DeviceForProductStrategies
كيفية تطبيق القواعد المختلفة عند التعامل مع اختيار الأجهزة في استراتيجيات المنتجات. تصف الأجزاء الزرقاء
القواعد التي يجب أخذها في الاعتبار، والجزء الأخضر هو
الإعدادات المطبَّقة. يحتوي هذا المثال تحديدًا على الإعدادات التالية:
- اختيار جهاز بلوتوث A2DP لاستراتيجية منتجات الموسيقى (رقم التعريف 1000،
vx_1000
)- إذا تم استخدامها للوسائط، لا تستبعد A2DP
- إذا كان يتم استخدامه للتواصل، لا يكون بلوتوث SCO
- إذا كانت الأجهزة متاحة، يجب تضمين بروتوكول A2DP للبلوتوث.
- اختيار جهاز الحافلة
- إذا كانت أجهزة الحافلة متاحة
- إذا كان العنوان هو
BUS00_MEDIA
- اختَر جهاز الإخراج التلقائي في حال عدم اختيار جهاز آخر.
لإنشاء ملف XML الخاص بمحرك السياسة القابل للضبط، يمكنك تشغيل ملفات ملف إطار عمل المَعلمات (PFW) من خلال نظام الإنشاء، من خلال تحديد قاعدة إنشاء باستخدام الخطوات التالية:
في ملف
Android.bp
، أنشئ مجموعة ملفات للملف:filegroup { name: ":device_for_product_strategies.pfw", srcs: ["engine/parameter-framework/Settings/device_for_product_strategyies.pfw"], }
أضِف الملف إلى ملفات PfW الأخرى (إن توفّرت).
filegroup { name: "edd_files", srcs: [ ":device_for_input_source.pfw", ":volumes.pfw", ":device_for_product_strategyies.pfw", ], }
أنشئ قاعدة إنشاء النطاق المناسبة:
genrule { name: "domaingeneratorpolicyrule_gen", defaults: ["domaingeneratorpolicyrule"], srcs: [ ":audio_policy_engine_criterion_types", ":audio_policy_pfw_structure_files", ":audio_policy_pfw_toplevel", ":edd_files", ], }
حيث يكون
domaingeneratorpolicyrule
هو قاعدة إنشاء يوفّرها إطار العمل لإنشاء ملفPolicyConfigurableDomains.xml
. في ما يلي ملفات المصدر الأخرى (scrs
) المضمّنة في قواعد توليد النطاقات:المصدر الوصف audio_policy_pfw_toplevel
ملف إعدادات إطار عمل المَعلمات من المستوى الأعلى audio_policy_pfw_structure_files
ملفات بنية إنشاء النطاقات، والتي تُستخدَم لإنشاء ملفات الضبط audio_policy_engine_criterion_types
ملف XML لأنواع المعايير، يصف المعايير المستخدَمة أثناء الإنشاء edd_files
قائمة بملفات النطاقات الفردية (يحتوي كل منها على علامة <ConfigurableDomain> واحدة)
بعد تشغيل قاعدة الإنشاء في عملية الإنشاء، يتم إنشاء
PolicyConfigurableDomains.xml
مع جميع النطاقات. يعرض ما يلي
مقتطفًا من الملف الذي تم إنشاؤه باستخدام مثال قواعد PfW:
---ConfigurableDomain Name="DeviceForProductStrategies.Music.SelectedDevice"---
<Configurations>
<Configuration Name="BluetoothA2dp">
<CompoundRule Type="All">
<SelectionCriterionRule SelectionCriterion="ForceUseForMedia" MatchesWhen="IsNot" Value="NO_BT_A2DP"/>
<SelectionCriterionRule SelectionCriterion="ForceUseForCommunication" MatchesWhen="IsNot" Value="BT_SCO"/>
<SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="BLUETOOTH_A2DP"/>
</CompoundRule>
</Configuration>
<Configuration Name="Bus">
<CompoundRule Type="All">
<SelectionCriterionRule SelectionCriterion="AvailableOutputDevices" MatchesWhen="Includes" Value="BUS"/>
<SelectionCriterionRule SelectionCriterion="AvailableOutputDevicesAddresses" MatchesWhen="Includes" Value="BUS00_MEDIA"/>
</CompoundRule>
</Configuration>
<Configuration Name="Default">
<CompoundRule Type="All"/>
</Configuration>
</Configurations>
تصحيح أخطاء الرموز البريدية
يمكنك استخدام remote-process
لتفريغ إعدادات CAP:
adb root && adb remount
adb shell remote-process unix:///dev/socket/audioserver/policy_debug dumpDomains
يعرض هذا القسم جميع النطاقات والإعدادات، بما في ذلك شروط التطبيق. يعرض ما يلي مقتطفًا من جهاز Cuttlefish للسيارات باستخدام بروتوكول A2DP في البلوتوث وجهاز الحافلة والإعدادات التلقائية. راجِع الإعدادات:
- ConfigurableDomain: DeviceForProductStrategies.Music.SelectedDevice =
{Sequence aware: no, Last applied configuration: Bus}
- Configuration: BluetoothA2dp
- CompoundRule = All
- SelectionCriterionRule = ForceUseForMedia IsNot NO_BT_A2DP
- SelectionCriterionRule = ForceUseForCommunication IsNot BT_SCO
- SelectionCriterionRule = AvailableOutputDevices Includes BLUETOOTH_A2DP
- Configuration: Bus
- CompoundRule = All
- SelectionCriterionRule = AvailableOutputDevices Includes BUS
- SelectionCriterionRule = AvailableOutputDevicesAddresses Includes BUS00_MEDIA_CARD_0_DEV_0
- Configuration: Default
- CompoundRule = All
لمزيد من المعلومات عن الأوامر الأخرى المتاحة لتصحيح أخطاء إطار عمل مَعلمة CAP، يمكنك استخدام هذه الأداة:
adb shell remote-process unix:///dev/socket/audioserver/policy_debug help
لاستخدام الأداة، يجب أن يسمح المصنّعون الأصليون للأجهزة بضبط الصوت في الجهاز. للتأكّد مما إذا كان الجهاز يسمح بالضبط، استخدِم الأمر التالي:
adb shell cat /system/etc/parameter-framework/ParameterFrameworkConfigurationCap.xml
في الإصدار 15 من Android والإصدارات الأقدم، قد يكون الملف مختلفًا، لذلك استخدِم الأمر التالي:
adb shell cat /system/etc/parameter-framework/ParameterFrameworkConfigurationPolicy.xml
يجب أن يحتوي الملف على TuningAllowed="true"
مع منفذ السيرفر المرتبط به:
<?xml version="1.0" encoding="UTF-8"?>
<ParameterFrameworkConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
SystemClassName="Policy" TuningAllowed="true" ServerPort="unix:///dev/socket/audioserver/policy_debug">
<SubsystemPlugins>
<Location Folder="">
<Plugin Name="libpolicy-subsystem.so"/>
</Location>
</SubsystemPlugins>
<StructureDescriptionFileLocation Path="Structure/Policy/CapClass.xml"/>
</ParameterFrameworkConfiguration>
يتم إنشاء
هذا الملف تلقائيًا
حسب نوع صورة الإصدار (أو استخدام ملف مختلف لإصدار الإصدار
أو تصحيح الأخطاء
لإصدار قديم). يضبط الإصدار العلني قيمة TuningAllowed
على false
بدون
منفذ مقبس (يُحظر استخدام المقابس لهذا الغرض في الإصدارات العلنية). في الإصدارات الهندسية وإصدارات
userdebug
، يتم ضبطه على true
مع استخدام منفذ المقبس. يُرجى العلم أنّ هذا هو
الملف الذي يشير إليه audio_policy_pfw_toplevel
. يجب أيضًا تضمين أداة المعالجة عن بُعد
في العلامة التجارية للجهاز
أو ملف الإنشاء:
# Tool used for debug Parameter Framework (only for eng and userdebug builds)
PRODUCT_PACKAGES_DEBUG += remote-process
يجب أيضًا تضمين سياسة SELinux المناسبة للسماح بفتح مآخذ التوصيل. لا يعمل هذا الإجراء إلا في وضع تصحيح الأخطاء لأنّه لا يسمح وضع الإصدار النهائي بوضوح باستخدام مآخذ التوصيل:
BOARD_SEPOLICY_DIRS += frameworks/av/services/audiopolicy/engineconfigurable/sepolicy
نقل بيانات CAP في Android 16
نظرًا للتغييرات الرئيسية التي أجراها محرك AIDL audio HAL CAP والإصدارات السابقة ، هناك سيناريوهات مختلفة لانتقال الجهاز يجب مراعاتها. يتناول هذا القسم أبرز سيناريوهات النقل ويقدّم اقتراحات بشأن العمل لتفعيل إعدادات محرك CAP.
السيناريو 1: جهاز جديد يعمل بنظام التشغيل Android 16 أو إصدار أحدث، بدون مصدر سابق لإعدادات CAP للجهاز
يجب أن يعمل الجهاز الجديد بالإصدار 16 من نظام التشغيل Android أو إصدار أحدث ويحتوي على رمز مبرمَج في قسم vendor
. وهذا يعني أنّه يجب أن يعرض ملف الحزمة القابل للضبط
إعدادات محرّك سياسة الصوت من خلال واجهة HAL للصوت في AIDL. يجب نسخ إعدادات محرّك Device
CAP من الأمثلة. يجب ألا يكون هناك
تعريف نطاق CAP لـ PfW في القسم vendor
.
يجب أن تكون صورة النظام المستخدَمة للجهاز هي Android 16 أو إصدار أحدث. يرصد إطار عمل خدمة الصوت إعدادات CAP من خلال واجهة HAL لصوت برمجة التطبيقات (AIDL)، لذا يُنشئ إطار العمل خدمة PfW باستخدام تعريف نطاق CAP لـ PfW من صورة النظام، ويحمِّل إعدادات CAP للجهاز التي تم تلقّيها من خلال AIDL.
على سبيل المثال، يمكنك الاطّلاع على الجهاز الافتراضي Cuttlefish للسيارات، الذي تم تقديمه في هذا التغيير ويمكن الرجوع إليه للحصول على الملفات المطلوبة وقواعد التصميم وملفّات الإنشاء المطلوبة لإعداد ملفات الضبط المطلوبة. يعمل هذا مع أدوات التحميل المقدَّمة في HAL التلقائي للصوت في AIDL.
السيناريو 2: جهاز جديد يعمل بنظام التشغيل Android 16 أو إصدار أحدث، من جهاز سابق يستخدم CAP
يجب أن يعمل الجهاز الجديد بالإصدار 16 من نظام التشغيل Android أو إصدار أحدث ويحتوي على رمز مبرمَج في قسم vendor
. ومع ذلك، بما أنّ المصنّع الأصلي للجهاز لديه إعدادات محرك
CAP قابلة للاستخدام، سيريد استخدامها كنقطة بداية
(أو إعادة استخدامها بالكامل). يتضمّن إصدار AIDL من إعدادات CAP بعض التغييرات مقارنةً بالإصدار 15 من نظام Android والإصدارات الأقدم، لذا على العميل تحويل الإعدادات الحالية إلى AIDL. اطّلِع على المناقشة في
استراتيجيات المنتجات لمعرفة التغييرات بين
Android 16 والإصدارات الأقدم للاطّلاع على التغييرات المطلوبة.
بشكل عام، يرصد إطار العمل الصوتي إعدادات CAP ويحمّلها بالطريقة
نفسها المُستخدَمة في السيناريو 1.
السيناريو 3: تحديث جهاز حالي مزوّد بميزة "التحديث التلقائي من Google" إلى Android 16 في قسم النظام فقط
في هذا السيناريو، يحتوي القسم vendor
على الإصدار
15 من Android والإصدارات الأقدم من إعدادات CAP للجهاز،
وتعريف نطاق CAP لبرنامج PfW. لم يتم إجراء أي تغييرات على القسم vendor
، لذا
لا يزال يستخدم HIDL HAL. يتّبع إطار العمل سيناريو Android 15 والإصدارات الأقدم، ويحمِّل جميع الإعدادات المتعلّقة بـ CAP من القسم vendor
.
السيناريو 4: جهاز حالي تم إصداره بنظام Android 15، مزوّد بـ CAP
لم يكن بروتوكول CAP متوافقًا مع AIDL في الإصدار 15 من نظام التشغيل Android، لذا طرح بعض
المورّدين أجهزة جديدة تتضمّن AIDL Audio HAL وCAP، والذي تم تحميله من قِبل
إطار عمل الصوت. كان هذا الوضع المختلط غير رسمي، ولكن تم تضمينه في الإصدار
Android 16. يُرجى العلم أنّه يجب عدم استخدام هذا الوضع لطرح أجهزة جديدة تعمل بنظام Android 16، بل لتمكين الأجهزة الحالية التي تعمل بنظام Android 15 من المورّد من التحديث إلى Android 16 (تحديث القسم system
).
يرصد إطار عمل الصوت إعدادات HAL للصوت في AIDL بدون إعدادات
CAP. بالنسبة إلى إعدادات CAP، تعتمد خدمة سياسة الصوت (إطار عمل
الصوت) على تحميل إعدادات CAP من القسم vendor
. في هذه الحالة، يجب تحميل كلّ من تعريف نطاق CAP لبروتوكول PfW وملف إعدادات
CAP للجهاز من قسم vendor
.
ملخّص نقل بيانات "الإعلانات الصورية على شبكة البحث"
يلخّص الجدول التالي إعدادات النظام والمورّد المتوافقة ومتطلّبات إعداد CAP:
قسم النظام | سيناريوهات | إصدار رمز قسم المورّد | نوع HAL الأساسي للصوت | الموقع الجغرافي لتعريف نطاق PfW CAP | إعدادات "الوصول المحدود للأجهزة" |
---|---|---|---|---|---|
Android 15 | 4 | الإصدار 14 من Android أو الإصدارات الأقدم | HIDL | vendor |
إصدار HIDL |
Android 16 | 3 | الإصدار 14 من Android أو الإصدارات الأقدم | HIDL | vendor |
إصدار HIDL |
Android 16 | 4 | Android 15 | لغة تعريف الهوية (AIDL) | vendor |
إصدار HIDL |
Android 16 | 2 | Android 16 | لغة تعريف الهوية (AIDL) | system |
إصدار لغة تعريف واجهة نظام Android (AIDL) الذي تم تحويله من HIDL |
Android 16 | 1 | Android 16 | لغة تعريف الهوية (AIDL) | system |
إصدار AIDL من المثال |