علامات AAOS لإعدادات الصوت

يستخدم نظام التشغيل Android Automotive OS (AAOS) علامات وإعدادات لتفعيل ميزات مختلفة، بدءًا من التوجيه الديناميكي إلى علامات الميزات الأكثر عمومية، مثل التحكّم في مستوى الصوت من خدمة السيارة. يمكنك الاطّلاع هنا على علامات إعدادات AAOS الحالية الخاصة بإدارة الصوت.

إبلاغ الغرض
audioUseDynamicRouting يتم تحديدها في ملف إعدادات خدمة السيارة من أجل تفعيل توجيه AAOS. يجب ضبط الإعداد على true. عند ضبط القيمة على false، يتم إيقاف التوجيه ومعظم CarAudioService، ويعود نظام التشغيل إلى السلوك التلقائي الموضّح في ضبط سياسات الصوت.
useCoreAudioRouting يتم تحديدها في ملف إعداد خدمة السيارة من أجل تفعيل إدارة توجيه الصوت الأساسي في نظام التشغيل Android Automotive. عند ضبط القيمة على true، تستخدم خدمة الصوت في السيارة تعريفات الإعدادات التي تم ضبطها باستخدام محرك سياسة الصوت القابل للضبط. إذا تم ضبط القيمة على false، ستعود إدارة التوجيه إلى استخدام تعريف مزيج سياسات الصوت الديناميكية لخدمة صوت السيارة كما تم ضبطه باستخدام audioUseDynamicRouting.
useCoreAudioVolume يتم تحديدها في ملف إعدادات خدمة السيارة من أجل تفعيل إدارة مستوى الصوت الأساسي في AAOS. عند ضبط القيمة على true، تستخدم خدمة الصوت في السيارة تعريفات مجموعات مستوى الصوت التي تم إعدادها باستخدام محرك سياسة الصوت القابل للضبط. إذا تم ضبط القيمة على false، سيعود نظام إدارة مستوى الصوت إلى استخدام تعريف مجموعة مستوى الصوت التلقائي لخدمة صوت السيارة كما تم ضبطه باستخدام audioUseDynamicRouting.
audioUseCarVolumeGroupMuting يتم تحديدها في ملف إعدادات خدمة السيارة لتفعيل كتم صوت مجموعات الصوت الفردية. عند ضبطها على false (القيمة التلقائية)، يتم إيقاف كتم مجموعات الصوت الفردية. بدلاً من ذلك، يؤدي كتم الصوت إلى تفعيل أو إيقاف ميزة "الكتم الرئيسي". عند ضبط القيمة على true، يتم تفعيل كتم صوت مجموعة الصوت في السيارة ويمكن كتم صوت كل مجموعة صوت على حدة. عندما تكون قيمة true، يجب تنفيذ كتم صوت مجموعة الصوت في طبقة تجريد الأجهزة للتحكّم في الصوت.
audioUseHalDuckingSignals يتم تحديدها في ملف إعدادات خدمة السيارة لتفعيل واجهة برمجة التطبيقات IAudioControl#onDevicesToDuckChange من أجل إبلاغ طبقة تجريد الأجهزة (HAL) بموعد خفض مستوى الصوت. عند ضبط القيمة على true (القيمة التلقائية)، تتلقّى واجهة برمجة التطبيقات إشارات تشير إلى أجهزة الإخراج التي يجب خفض مستوى صوتها والاستخدامات التي يجب أن تحافظ على التركيز. عندما تكون القيمة false، لا يتم طلب البيانات من واجهة برمجة التطبيقات. لا يتم استدعاء واجهة برمجة التطبيقات إلا إذا كان Audio Control HAL ينفّذ ميزة خفض مستوى الصوت.
config_oemCarService يتم تحديد هذا الاسم في ملف إعداد خدمة السيارة، وهو اسم المكوّن الخاص بخدمة التخصيص من المصنّع الأصلي للجهاز. يمكن لمصنّعي المعدات الأصلية اختيار تنفيذ هذه الخدمة لتخصيص إجراءات خدمة السيارة وفقًا لسياسات مختلفة. إذا اختار المصنّعون الأصليون للأجهزة تنفيذ هذا المكوّن، عليهم تنفيذ خدمة لتوسيع نطاق OemCarService الذي تعرضه مكتبة car-lib، ثم تنفيذ خدمات المكوّنات المطلوبة. بالنسبة إلى خدمة الصوت في السيارة على وجه التحديد، يمكن لمصنّعي المعدات الأصلية تنفيذ أي من الخدمات الفرعية الصوتية لإدارة إجراءات الصوت. لمزيد من التفاصيل، يُرجى الاطّلاع على خدمة Car Audio Plugin. إذا كان اسم المكوّن غير صالح، لن يتمكّن CarService من الاتصال بأي خدمة من خدمات الشركة المصنّعة للجهاز الأصلي. لا يمكن أن يكون اسم المكوّن حزمة تابعة لجهة خارجية. يجب أن يكون مثبّتًا مسبقًا.
audioVolumeAdjustmentContextsVersion

يتم تحديدها في ملف إعدادات خدمة السيارة، وهي إعدادات لاختيار إصدار قائمة أولويات سياق تعديل مستوى الصوت.

يتضمّن الإصدار 1 جميع سياقات الصوت، بهذا الترتيب:

  • NAVIGATION
  • CALL
  • MUSIC
  • ANNOUNCEMENT
  • VOICE_COMMAND
  • CALL_RING
  • SYSTEM_SOUND
  • SAFETY
  • ALARM
  • NOTIFICATION
  • VEHICLE_STATUSEMERGENCY

يقتصر الإصدار 2 على السياقات التالية، بهذا الترتيب.

الإصدار التلقائي هو 1.

  • CALL
  • MUSIC
  • ANNOUNCEMENT
  • VOICE_COMMAND
audioPersistMasterMuteState يتم تحديدها في ملف إعدادات خدمة السيارة، وهي إعدادات للحفاظ على حالة كتم الصوت العامة. عندما تكون القيمة true (القيمة التلقائية)، يعيد نظام التشغيل Android حالة كتم الصوت العامة عند بدء التشغيل. عندما تكون قيمة audioUseCarVolumeGroupMuting هي true، لن يؤثر ذلك في استمرار التغييرات في حالة كتم الصوت، لأنّ التغييرات في حالة كتم الصوت تستند إلى مجموعات مستوى الصوت الفردية. يتم ضبط القيمة التلقائية على true ويجب استبدالها عندما لا يكون من المفترض أن يتم الاحتفاظ بإعداد كتم الصوت الرئيسي لجهاز.
audioVolumeKeyEventTimeoutMs

يتم تحديدها في ملف إعدادات خدمة السيارة، وهي إعدادات تشير إلى المهلة بالملي ثانية التي يتم خلالها اعتبار مجموعة مستوى صوت السيارة نشطة لإجراء تغييرات على مستوى الصوت أثناء أحداث مفتاح مستوى الصوت. يتم استخدام الإعدادات على النحو التالي:

  • يُستخدم المهلة الزمنية لتحديد ما إذا كان لا يزال من الممكن أخذ عملية تشغيل (مستوى صوت مرتبط باستخدام الصوت في عملية التشغيل) في الاعتبار عند اختيار مستوى الصوت تلقائيًا بعد توقّف التشغيل.
  • يُستخدَم المهلة أيضًا كمدة الإيقاف المؤقت المطلوبة بين عمليات ضبط مستوى الصوت التلقائية لتغيير ما يضبطه المستخدم.

القيمة التلقائية هي 3000 مللي ثانية، ويجب أن يعدّلها مصنّعو المعدات الأصلية لتخصيص تجربة المستخدم.

audioUseCarVolumeGroupEvent يتم تحديدها في ملف إعداد خدمة السيارة، وهي إعدادات لتفعيل أحداث معاودة الاتصال لمجموعات الصوت. عندما تكون القيمة true، يتلقّى العملاء رد اتصال من خلال ICarVolumeGroupEvent للأحداث التي تؤثر في مجموعات مستوى الصوت. عندما يكون هذا الإعداد مفعّلاً:
  • ننصح بشدة بأن تتوافق الأجهزة مع IAudioControl#setModuleChangeCallback و IAudioControl#registerGainCallback للأحداث والتغييرات التي تطرأ على أجهزة الصوت.
  • عندما يسجّل التطبيق نفسه كلاً من CarVolumeCallback وCarVolumeGroupEventCallback، ستنتقل معاودات الاتصال الخاصة بفهرس مجموعة الصوت وكتم صوت مجموعة الصوت عبر CarVolumeGroupEventCallback فقط. لذلك، ننصح بشدة جميع التطبيقات بنقل البيانات إلى واجهة معاودة الاتصال الجديدة لضمان تحقيق أداء ثابت.
  • القيمة التلقائية هي false. ننصحك بضبط هذا الخيار على true لأنّ واجهات برمجة التطبيقات التي تتيح استخدام عمليات معاودة الاتصال القديمة الخاصة بمستوى الصوت متوقّفة نهائيًا وستتم إزالتها قريبًا.

config_useFixedVolume محدّد في frameworks/base/core/res/res/values/config.xml يجب ضبطها على true للسماح لخدمة الصوت في السيارة بإدارة التحكّم في مستوى الصوت. عندما لا يتم ضبط العلامة config_useFixedVolume، أو يتم ضبطها على false (القيمة التلقائية)، يمكن للتطبيقات استدعاء واجهات برمجة التطبيقات AudioManager لإدارة مستوى الصوت وتغيير مستوى الصوت حسب نوع البث في برنامج دمج الصوت. قد يكون هذا الأمر غير مرغوب فيه بسبب التأثير المحتمل في التطبيقات الأخرى، وبسبب أنّ خفض مستوى الصوت في برنامج دمج الصوت قد يؤدي إلى توفّر عدد أقل من البتات المهمة في الإشارة عند استقبالها في مضخّم الصوت. الأجهزة الجديدة التي لم يتم ضبطها والتي تم ضبطها على true لتلقّي تغييرات مستوى الصوت من خلال واجهات برمجة التطبيقات AudioManager الخاصة بمستوى الصوت وكتم الصوت
config_handleVolumeKeysInWindowManager يجب ضبط القيمة المحدّدة في frameworks/base/core/res/res/values/config.xml على true للسماح لخدمة صوت السيارة باعتراض أحداث مفتاح مستوى الصوت. إذا تم ضبطها على false (القيمة التلقائية)، يمكن إعادة توجيه أحداث مفتاح مستوى الصوت إلى التطبيق الذي يظهر في المقدّمة، ويمكن أن يؤدي ذلك إلى نتائج سلبية من إدارة أحداث مفتاح مستوى الصوت خارج خدمة صوت السيارة.
audioUseMinMaxActivationVolume يتم تحديدها في ملف إعدادات خدمة السيارة لتفعيل الحد الأدنى والأقصى لمستوى صوت التنشيط. عندما تكون القيمة true، يمكن ضبط فهرس زيادة مستوى الصوت بسبب إدارة الحد الأدنى والحد الأقصى لمستوى صوت التنشيط. عندما تكون القيمة false (القيمة التلقائية)، لن يكون للحد الأدنى والأقصى لمستوى الصوت عند التفعيل أي تأثير.
audioUseFadeManagerConfiguration يتم تحديدها في ملف إعدادات خدمة السيارة لتفعيل سلوك فقدان التركيز الصوتي الذي يفرضه النظام. عندما true، يحلّل إطار عمل الصوت في السيارة تعريفات إعدادات التلاشي الخاصة بالصوت في السيارة ويطبّق FadeManagerConfiguration المناسب عند إرسال إشارة فقدان التركيز الصوتي. عند ضبط القيمة false (القيمة التلقائية)، لا يفرض النظام سلوك التلاشي عندما يفقد أحد التطبيقات تركيز الصوت.

إعدادات خدمة الصوت في السيارة

قبل الإصدار 13 من نظام التشغيل Android، كانت تتم الكتابة فوق إعدادات خدمة السيارة باستخدام تراكب إعدادات المنتج (لمزيد من المعلومات، راجِع تخصيص الإصدار باستخدام تراكبات الموارد) للملف packages/services/Car/service/res/values/config.xml.

PRODUCT_PACKAGE_OVERLAYS := <path_to_overlay>

يجب أن يتضمّن موقع ملف الإعداد من <path_to_overlay> إلى الموقع الفعلي packages/services/Car/service/res/values/.

RROs لخدمات السيارات

منذ الإصدار 13 من نظام التشغيل Android، يتيح نظام التشغيل AAOS استخدام تراكبات الموارد في وقت التشغيل. استخدِم RRO لتغيير قيمة إعدادات الصوت في السيارة. على سبيل المثال، اطّلِع على متطلبات RRO الخاصة بمرجع cuttlefish في مجال السيارات في device/google/cuttlefish/shared/auto/rro_overlay/. يتم إلغاء إعدادات audioUseDynamicRouting في device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/res/values/config.xml.

<resources>
    <bool name="audioUseDynamicRouting">true</bool>
...

يتم تضمين خريطة تراكب الموارد في device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/res/xml/overlays.xml:

<overlay>
...
  <item target="bool/audioUseDynamicRouting"
value="@bool/audioUseDynamicRouting" />
...
</overlay>

يحتوي بيان التراكب الخاص بالمورد المحدّد في device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/AndroidManifest.xml على المجموعة targetPackage التي تم ضبطها على com.android.car.updatable.

راجِع هذه المراجع لمزيد من المعلومات:

واجهة برمجة التطبيقات التي تم تفعيل الميزة فيها

يعرض الإجراء true إذا كانت الميزة مفعّلة على الجهاز، وإلا يعرض false. في واجهة برمجة التطبيقات CarAudioManager#isAudioFeatureEnabled، يجب أن تكون المَعلمة التي تم تمريرها إحدى القيم التالية:

  • AUDIO_FEATURE_DYNAMIC_ROUTING
  • AUDIO_FEATURE_VOLUME_GROUP_MUTING
  • AUDIO_FEATURE_OEM_AUDIO_SERVICE
  • AUDIO_FEATURE_VOLUME_GROUP_EVENTS
  • AUDIO_FEATURE_AUDIO_MIRRORING