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

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

إبلاغ الغرض
audioUseDynamicRouting يتم تحديدها في ملف إعدادات خدمة السيارة لأجل تفعيل توجيه AAOS. يجب ضبط الإعداد على true. عند إيقاف false، يتوقف التوجيه والعديد من CarAudioService، ويعود نظام التشغيل إلى السلوك التلقائي الموضّح في ضبط سياسات الصوت.
useCoreAudioRouting يتم تحديدها في ملف إعدادات خدمة السيارة لأجل تفعيل إدارة توجيه الصوت الأساسية في AAOS. عند ضبط القيمة على true، تستخدم خدمة الصوت في السيارة تعاريف الضبط التي تم إعدادها باستخدام محرك سياسة الصوت القابل للضبط. إذا تم ضبط القيمة على false، ستعود إدارة التوجيه إلى استخدام تعريف مزيج سياسة الصوت الديناميكي لخدمة الصوت في السيارة كما هو تم ضبطه باستخدام audioUseDynamicRouting.
useCoreAudioVolume يتم تحديدها في ملف إعدادات خدمة السيارة لأجل تفعيل إدارة مستوى الصوت الأساسية في نظام التشغيل AAOS. عند ضبط القيمة على true، تستخدِم خدمة الصوت في السيارة إعدادات تعريفات مجموعات مستوى الصوت التي تم ضبطها باستخدام محرك سياسة الصوت القابل للضبط. في حال ضبط القيمة على false، تعود إدارة مستوى الصوت إلى استخدام تعريف مجموعة مستوى الصوت التلقائي لخدمة الصوت في السيارة كما تم ضبطه باستخدام audioUseDynamicRouting.
audioUseCarVolumeGroupMuting يتم تحديده في ملف إعدادات خدمة السيارة لتفعيل كتم صوت مجموعات مستوى الصوت الفردية. عند ضبط القيمة على false (القيمة التلقائية)، يتم إيقاف كتم صوت المجموعات الفردية لمستوى الصوت. بدلاً من ذلك، يؤدي كتم الصوت إلى تفعيل ميزة كتم الصوت الرئيسية. عند ضبطه على true، يتم تفعيل كتم صوت مجموعة مستوى الصوت في السيارة ويمكن كتم صوت كل مجموعة فردية من مجموعات مستوى الصوت بشكل منفصل. عند true، يجب تنفيذ كتم صوت مجموعة الصوت في واجهة HAL للتحكّم في الصوت.
audioUseHalDuckingSignals يتم تحديده في ملف إعدادات خدمة السيارة لتفعيل واجهة برمجة التطبيقات IAudioControl#onDevicesToDuckChange لإعلام HAL بالوقت المناسب للتوغّل. عندما تكون القيمة true (القيمة التلقائية)، تتلقّى واجهة برمجة التطبيقات إشارات تشير إلى الأجهزة التي يجب إخفاء المحتوى عنها واستخدامات المحتوى التي يجب التركيز عليها. عند false، لا يتم استدعاء واجهة برمجة التطبيقات. لا يتمّ استدعاء واجهة برمجة التطبيقات ما لم ينفِّذ Audio Control HAL عملية كتم الصوت.
config_oemCarService تم تحديده في ملف إعدادات خدمة السيارة، وهو اسم المكوّن للخدمة المخصّصة للمصنّع الأصلي للجهاز. يمكن لمصنّعي السيارات الأصليين اختيار تنفيذ هذه الخدمة لأجل تخصيص إجراءات صيانة السيارات حسب السياسات المختلفة. إذا اختارت المصنّعين الأصليّين للسيارات تنفيذ هذا المكوّن، عليهم تنفيذ خدمة لتوسيع نطاق OemCarService الذي تعرضه car-lib، ثم تنفيذ خدمات المكوّنات المطلوبة. بالنسبة إلى خدمة الصوت في السيارة على وجه التحديد، يمكن لمصنّعي السيارات تنفيذ أيّ من الخدمات الفرعية للصوت لإدارة الإجراءات الصوتية. للاطّلاع على التفاصيل، يُرجى الاطّلاع على Car Audio Plugin Service. إذا كان اسم المكوّن غير صالح، لن يتم ربط 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 يتم تحديدها في ملف إعدادات خدمة السيارة، وهي إعدادات لتفعيل أحداث callback في مجموعات الوحدات. عند true، يتلقّى العملاء مكالمة تأكيد من خلال ICarVolumeGroupEvent بشأن الأحداث التي تؤثّر في مجموعات عدد المكالمات. عند تفعيل هذه الميزة:
  • ننصح المورّدين بشدة أيضًا بتوفير IAudioControl#setModuleChangeCallback وIAudioControl#registerGainCallback للأحداث والتغييرات في الأجهزة الصوتية.
  • عند تسجيل كل من CarVolumeCallback CarVolumeGroupEventCallback من خلال التطبيق نفسه، سيتم إرسال طلبات الحصول على فهرس مجموعة الصوت وطلبات كتم صوت مجموعة الصوت من خلال CarVolumeGroupEventCallback فقط. لذلك، ننصحك بشدة بنقل جميع التطبيقات إلى واجهة callback الجديدة لضمان الأداء المتسق.
  • تكون القيمة التلقائية 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/.

طلبات الحصول على موافقة من الجهات التنظيمية لخدمات السيارات

منذ Android 13، يتيح نظام التشغيل 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