قبل بدء بث منطقي، يطلب التطبيق التركيز على الصوت باستخدام سمات الصوت نفسها المستخدَمة في البث المنطقي. يجب أن يراعي التطبيق حالات فقدان التركيز ليعمل على النحو المتوقّع في حالات استخدام السيارات.
مع أنّ النظام لا يفرض إرسال طلب التركيز، ننصحك بإرساله. لذلك، ننصحك بالتركيز على الصوت كوسيلة للتحكّم بشكل غير مباشر وتجنُّب التعارض أثناء التشغيل بدلاً من اعتباره آلية أساسية للتحكّم في الصوت. يجب ألا تعتمد المركبة على نظام التركيز لتشغيل النظام الفرعي الصوتي.
تفاعلات التركيز
لإتاحة AAOS، يتم التعامل مع طلبات التركيز الصوتي استنادًا إلى تفاعلات محددة مسبقًا بين CarAudioContext
الطلب وCarAudioContext
حاملي التركيز الحاليين. هناك ثلاثة أنواع من التفاعلات:
- عرض حصري
- رفض
- متزامن
التفاعل الحصري
هذا هو نموذج التفاعل الأكثر استخدامًا مع Android.
في التفاعلات الحصرية، يُسمح لتطبيق واحد فقط بالتركيز في كل مرة.
لذلك، يتم منح التركيز لطلب التركيز الوارد، بينما يفقد حامل التركيز الحالي التركيز. بما أنّ كلا التطبيقَين يشغّلان الوسائط، يُسمح لتطبيق واحد فقط بالاحتفاظ بالتركيز. نتيجةً لذلك، يتم عرض طلب التركيز الذي أرسله التطبيق الذي تم تشغيله حديثًا مع AUDIOFOCUS_REQUEST_GRANTED
، بينما يتلقّى تطبيق الموسيقى الذي يتم تشغيله حاليًا حدثًا لتغيير التركيز مع حالة فقدان تتوافق مع نوع الطلب الذي تم إرساله.
رفض التفاعل
عند استخدام تفاعلات الرفض، يتم دائمًا رفض الطلب الوارد. على سبيل المثال، عند محاولة تشغيل الموسيقى أثناء إجراء مكالمة في هذه الحالة، إذا كان تطبيق "الهاتف" يحتفظ بتركيز الصوت لإجراء مكالمة وطلب تطبيق ثانٍ التركيز لتشغيل الموسيقى، سيتلقّى تطبيق الموسيقى AUDIOFOCUS_REQUEST_FAILED
ردًا على الطلب. بما أنّ طلب التركيز مرفوض، لن يتم إرسال أي إشارة إلى فقدان التركيز إلى العنصر الحالي الذي يركّز عليه المستخدم.
التفاعل المتزامن
تتفرّد AAOS بالتفاعلات المتزامنة. يمنح هذا الإذن التطبيقات التي تطلب التركيز الصوتي في السيارة إمكانية الاحتفاظ بالتركيز بشكل متزامن مع التطبيقات الأخرى. يجب استيفاء الشروط التالية لإجراء تفاعل متزامن. في ما يلي:
يجب أن يطلب طلب التركيز الوارد AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK
لا يضبط حامل التركيز الحالي setPauseWhenDucked(true)
يختار حامل التركيز الحالي عدم تلقّي أحداث تجنُّب التداخل مع أصوات أخرى
في حال استيفاء هذه المعايير، سيعود طلب التركيز مع AUDIOFOCUS_REQUEST_GRANTED
بدون أن يتغير التركيز الحالي. ومع ذلك، إذا اختار حامل التركيز الحالي تلقّي أحداث التعتيم أو الإيقاف المؤقت عند التعتيم، سيفقد حامل التركيز الحالي التركيز، كما يحدث مع التفاعل الحصري.
التعامل مع أحداث البث المتزامنة
على الرغم من أنّ التفاعل المتزامن له استخدامات عديدة، يجب توخّي الحذر عند الدمج والتخفيف على مستوى الأجهزة بين أجهزة الإخراج. ننصح بشدة بتوجيه مثيلات CarAudioContext
التي يُسمح بتشغيلها بشكل متزامن إلى أجهزة إخراج مختلفة.
من خلال توفير أجهزة إخراج منفصلة لأحداث البث المتزامنة، يتيح ذلك لطبقة تجريد الأجهزة (HAL) خفض مستوى صوت أحد أحداث البث قبل مزجها، أو توجيه أحداث البث الفعلية إلى مكبّرات صوت مختلفة في المركبة. إذا تم دمج التدفقات المنطقية ضمن Android، لن يتم تغيير مستويات الصوت وسيتم تقديمها كجزء من التدفق المادي نفسه.
على سبيل المثال، عند عرض الوسائط وتعليمات التنقّل في الوقت نفسه، يمكن خفض مستوى صوت بث الوسائط مؤقتًا (أو كتمه) حتى يمكن سماع تعليمات التنقّل بوضوح أكبر. بدلاً من ذلك، يمكن توجيه بث التنقّل إلى مكبّرات الصوت في جهة السائق مع استمرار تشغيل الوسائط في بقية المقصورة.
مصفوفة التفاعل
يعرض هذا الجدول مصفوفة التفاعل كما هو محدّد في CarAudioService
.
يمثّل كل صف CarAudioContext
حامل التركيز الحالي، ويمثّل كل عمود حامل التركيز للطلب الوارد.
على سبيل المثال، عندما يكون تطبيق وسائط الموسيقى في المقدّمة ويطلب تطبيق ملاحة التركيز، تشير المصفوفة إلى أنّه يمكن تشغيل التفاعلَين في الوقت نفسه، بافتراض استيفاء المعايير الأخرى للتفاعلات المتزامنة.
وبسبب التفاعلات المتزامنة، من الممكن أن يكون هناك أكثر من عنصر واحد يحتوي على التركيز. في هذه الحالة، تتم مقارنة طلب التركيز الوارد مع كل من حاملي التركيز الحاليين قبل تحديد التفاعل الذي سيتم تطبيقه. في هذه الحالة، يكون التفاعل الأكثر تحفظًا هو الأفضل. مرفوضة، ثم حصرية، وأخيرًا متزامنة.
الشكل 1. مصفوفة التفاعل مع التركيز على الصوت
التنقّل أثناء المكالمات الهاتفية
في Android 11، تم تقديم إعداد جديد للمستخدمين يتيح لهم تغيير سلوك التفاعل بين التنقّل والمكالمات الهاتفية. عند ضبط هذا الخيار، سيغيّر android.car.KEY_AUDIO_FOCUS_NAVIGATION_REJECTED_DURING_CALL
التفاعل بين طلبات التركيز الواردة NAVIGATION
وحاملي التركيز الحاليين CALL
من متزامن إلى مرفوض. إذا كان المستخدم يفضّل ألا تقاطع تعليمات التنقّل مكالمة، يمكنه تفعيل الإعداد. يتم الاحتفاظ بهذا الإعداد للمستخدم، ويمكن ضبطه بشكل ديناميكي حتى يتم الالتزام بالإعداد الجديد في طلبات التركيز اللاحقة.
أولويّة الصوت قابلة للتأخير
في نظام التشغيل Android 11، أضافت AAOS إمكانية طلب تركيز الصوت القابل للتأخير. يتيح ذلك تأخير طلبات التركيز غير المؤقتة عندما يؤدي تفاعلها مع مالكي التركيز الحاليين إلى رفضها. عندما يؤدي تغيير التركيز إلى حالة يمكن فيها للطلب المؤجّل أن يكتسب التركيز، يتم منح الطلب.
قواعد طلبات تأخير تركيز الصوت
الطلبات غير المؤقتة فقط لا يمكن تقديم طلب مؤجّل إلا للمصادر غير المؤقتة لتجنُّب تشغيل صوت مؤقت بعد فترة طويلة من انتهاء الحاجة إليه.
يمكن تأجيل طلب واحد فقط في كل مرة. إذا تم تقديم طلب يمكن تأجيله أثناء وجود طلب مؤجّل، سيتلقّى الطلب المؤجّل الأصلي حدث تغيير
AUDIOFOCUS_LOSS
وسيتلقّى الطلب الجديد ردًا متزامنًا بقيمةAUDIOFOCUS_REQUEST_DELAYED
.يجب أن تتضمّن الطلبات التي يمكن تأجيلها
OnAudioFocusChangeListener
. بعد تأخير الطلب، يتم استخدام أداة معالجة الأحداث لإرسال إشعار إلى مقدّم الطلب عند الموافقة على الطلب في النهاية (AUDIOFOCUS_GAIN
)، أو إذا تم رفضه لاحقًا (AUDIOFOCUS_LOSS
).
طلب التركيز القابل للتأخير
لإنشاء طلب يمكن تأجيله، اتّبِع الخطوات التالية:
استخدم
AudioFocusRequest.Builder#setAcceptsDelayedFocusGain
.mMediaWithDelayedFocusListener = new MediaWithDelayedFocusListener(); mDelayedFocusRequest = new AudioFocusRequest .Builder(AudioManager.AUDIOFOCUS_GAIN) .setAudioAttributes(mMusicAudioAttrib) .setOnAudioFocusChangeListener(mMediaWithDelayedFocusListener) .setForceDucking(false) .setWillPauseWhenDucked(false) .setAcceptsDelayedFocusGain(true) .build();
عند تقديم الطلب، تعامَل مع الردّ
AUDIOFOCUS_REQUEST_DELAYED
على النحو التالي:int delayedFocusRequestResults = mAudioManager.requestAudioFocus(mDelayedFocusRequest); if (delayedFocusRequestResults == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) { // start audio playback return; } if (delayedFocusRequestResults == AudioManager.AUDIOFOCUS_REQUEST_DELAYED) { // audio playback delayed to audio focus listener return; }
عند تأخُّر الطلب، يتعامل برنامج معالجة التركيز مع التغييرات في التركيز:
private final class MediaWithDelayedFocusListener implements OnAudioFocusChangeListener { @Override public void onAudioFocusChange(int focusChange) { synchronized (mLock) { switch (focusChange) { case AudioManager.AUDIOFOCUS_GAIN: … // Start focus playback case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT: … // Pause media transiently case AudioManager.AUDIOFOCUS_LOSS: … // Stop media
التلاشي الذي يفرضه النظام
يقدّم نظام التشغيل Android 15 ميزة التلاشي التدريجي للصوت التي يفرضها النظام في AAOS. في نظام التشغيل Android، لا يفرض النظام استخدام ميزة "التركيز على الصوت". لذلك، على الرغم من أنّ مطوّري التطبيقات مدعوون إلى الالتزام بإرشادات التركيز على الصوت، إذا استمر تطبيق في تشغيل الصوت بصوت عالٍ حتى بعد فقدان التركيز على الصوت، لا يمكن للنظام منعه.
في بيئات السيارات التي تتطلّب السلامة، يكون الالتزام بميزة "التركيز على الصوت" أمرًا بالغ الأهمية للحدّ من تشتيت انتباه السائق. باستخدام هذه الميزة، يقلّل إطار عمل الصوت تلقائيًا مستوى صوت التطبيقات التي تفقد تركيز الصوت، وذلك لتوفير تجربة صوتية أكثر تحكّمًا وتوقّعًا.
يساعد هذا التحسين في ضمان التزام التطبيقات بقرار فقدان التركيز الصوتي على النحو المحدّد في مصفوفة التفاعل، ما يمنع حدوث تعارضات في تشغيل الصوت.
التصميم العالي المستوى
يوضّح الشكل التالي التصميم العالي المستوى وميزة "فقدان التركيز" في السيارات:
الشكل 2. تصميم عالي المستوى لميزة التلاشي التي يفرضها النظام
- التلاشي المستهدف: تم تصميم ميزة التلاشي التي يفرضها النظام في Android 15 خصيصًا للحالات التي يفقد فيها التطبيق تركيز الصوت ولكن يستمر في تشغيله.
- آلية التلاشي: عندما يفقد تطبيق التركيز الصوتي لصالح تطبيق جديد يطلب التركيز الصوتي، يحدث ما يلي:
- يؤدي إطار الصوت إلى خفض مستوى صوت التطبيق الذي لم يعُد نشطًا تلقائيًا.
- بعد التلاشي، يكتم النظام صوت بث الصوت.
- يتلقّى التطبيق بعد ذلك إشعارًا بفقدان التركيز الصوتي.
- يتم كتم صوت التطبيقات التي لا تعمل بشكل سليم إلى أن تستعيد إذن التركيز على الصوت.
- المنطق التلقائي هو إظهار التطبيقات التي تم إخفاؤها تدريجيًا بعد ثانيتين. ومع ذلك، يمكن لمصنّعي المعدات الأصلية ضبط هذه القيمة على أي قيمة مهلة.
- يستخدم إطار عمل الصوت إعدادات الشركة المصنّعة للجهاز الأصلي لكل من عمليات التلاشي والتلاشي التدريجي.
ملف إعدادات الشركة المصنّعة للجهاز الأصلي (OEM): يتضمّن نظام التشغيل Android 15 ملف إعدادات جديدًا، وهو
car_audio_fade_configuration.xml
:- يسمح هذا الملف لمصنّعي المعدات الأصلية بتحديد معايير تطبيق فرض تركيز الصوت في النظام على التطبيق الذي فقد التركيز.
- لا يفرض إطار عمل الصوت التلاشي والتجاهل إلا إذا كان التطبيق الذي سيتم إيقافه يطابق القواعد التي حدّدها المصنّع الأصلي للجهاز في ملف XML هذا.
- ويوفّر ذلك آلية تتيح لمصنّعي المعدات الأصلية تخصيص سلوك الميزة استنادًا إلى خصائص التطبيق أو أنواع استخدام الصوت.
التحكّم في الميزات باستخدام تراكب الموارد في وقت التشغيل (RRO): تم طرح علامة جديدة لتراكب الموارد في وقت التشغيل (RRO) خاصة بالميزات، وهي
audioUseFadeManagerConfiguration
، وذلك لتفعيل هذه الميزة أو إيقافها:- تكون هذه الميزة غير مفعّلة تلقائيًا.
- لتفعيل ميزة فقدان التركيز الصوتي التي يفرضها النظام، على المصنّعين الأصليين للأجهزة ضبط هذه العلامة على
true
. - على الرغم من أنّ إطار عمل الصوت في السيارة يتوقّع تعريفات صحيحة لإعدادات التلاشي عند تفعيل العلامة، فإنّ عدم توفّر هذه التعريفات لا يؤدي تلقائيًا إلى حدوث استثناء خطير.
- يجب أن تتضمّن جميع تطبيقات إعدادات التلاشي تعريفات متطابقة للتلاشي. من الأخطاء الفادحة الإشارة إلى إعدادات التلاشي (من خلال اسمها) كجزء من إعدادات صوت السيارة بدون تقديم تعريف صالح.
- عند إيقاف العلامة، يتم تجاهل جميع تعريفات إعدادات التلاشي وأي مراجع للإعدادات.
إعدادات مدير التلاشي
يقدّم إطار عمل الصوت في Android 15 FadeManagerConfiguration
موحّدًا لتزويد الشركات المصنّعة للأجهزة بتحكّم دقيق في سلوك التلاشي الصوتي. يوضّح الشكل 3 هذا الإطار:
الشكل 3. إعدادات مدير التلاشي
يتضمّن هذا الإعداد ما يلي:
- خصائص الانتقال بين الإطارات باستخدام تأثير التلاشي: إعدادات التلاشي والتلاشي التدريجي
- يمكن تحديدها باستخدام استخدامات أو سمات صوتية معيّنة.
- تسمح بإعدادات مدة مخصّصة.
- تُستخدَم هذه الإعدادات لإنشاء
VolumeShaper.Configuration
.
- سياسات التلاشي: هي القواعد التي تحدّد متى يحدث التلاشي.
- مفتاح تبديل عام لتفعيل التلاشي أو إيقافه
- قائمة قابلة للإعداد تتضمّن استخدامات الصوت التي يمكن أن تتلاشى (تكون مؤهّلة للتلاشي عند فقدان التركيز).
- تمنع قوائم الاستبعاد (غير القابلة للتلاشي) مصادر الصوت المهمة أو المحدّدة من التلاشي. يمكن أن تستند هذه القوائم إلى ما يلي:
- أنواع المحتوى
- سمات الصوت
- معرّفات UID للتطبيقات (يمكن ضبطها أثناء وقت التشغيل فقط)
إعدادات المصنّع الأصلي للجهاز
في هذا القسم، سنتعرّف على عمليات التخصيص المتاحة من الشركة المصنّعة للجهاز الأصلي.
ملف XML لإعدادات التلاشي في صوت السيارة
يقدّم نظام التشغيل Android 15 ملف إعداد جديدًا، وهو
car_audio_fade_configuration.xml
، ما يتيح للمصنّعين الأصليين للجهاز إجراء تخصيصات شاملة
لسلوك التلاشي التدريجي للصوت عند فقدان التركيز.
- يتيح ملف XML هذا تحديد إعدادات متعددة ومختلفة للتلاشي، ويتطلّب كل منها اسمًا فريدًا للرجوع إليه في
car_audio_configuration.xml
. - يمكن تطبيق هذه الإعدادات بمرونة على مستوى مناطق الصوت المختلفة وإعدادات المناطق.
- يُرجى العِلم أنّ كل إعدادات التلاشي تقبل قيم المدة بالملّي ثانية فقط، ويستخدمها النظام بعد ذلك لإنشاء
VolumeShaper.Configuration
المقابل داخليًا.
للحصول على إرشادات عملية حول التنفيذ، يُرجى الرجوع إلى أمثلة الإعدادات المتوفّرة للمحاكي على الرابط device/generic/car/emulator/audio/car_audio_fade_configuration.xml
.
ملف XML لإعدادات الصوت في السيارة
يقدّم Android 15 ملف car_audio_configuration.xml
معدَّلاً، وهو الآن في الإصدار 4، ويتضمّن علامتَي applyFadeConfigs
وfadeConfig
الجديدتَين.
يمكن أن تحتوي علامة applyFadeConfigs
على تعريفات fadeConfig
متعددة،
ما يتيح إعدادات مرنة للتلاشي. كل تعريف:
- يجب أن يتضمّن
fadeConfig
تلقائيًا واحدًا محدّدًا باستخدامisDefault = true
. - يمكن أن تتضمّن عدة تعريفات
fadeConfig
مؤقتة. يتم تطبيق هذه الإعدادات المؤقتة بشكل خاص أثناء التفاعلات التي تؤدي إلى فقدان التركيز الصوتي، وفقط عندما يستوفي التطبيق الذي يكتسب التركيز الصوتي المعايير المحددة في الإعداد المؤقت.
للحصول على إرشادات عملية حول التنفيذ، يُرجى الرجوع إلى أمثلة الإعدادات المتوفّرة للمحاكي على الرابط device/generic/car/emulator/audio/car_audio_configuration.xml
.
إضافة خدمة أولويّة الصوت الخاصة بالمصنّع الأصلي للجهاز
يمكن لمصنّعي المعدات الأصلية الذين يوفّرون خدمة مخصّصة للتركيز على صوت السيارة ضبط إعدادات التلاشي الصوتي من خلال تضمينها في OemCarAudioFocusResult
.
يمكن تحقيق ذلك باستخدام طريقة الإنشاء setAudioAttributesToCarAudioFadeConfigurationMap()
:
/** @see OemCarAudioFocusResult#getAudioAttributesToCarAudioFadeConfigurationMap() **/
@NonNull
public Builder setAudioAttributesToCarAudioFadeConfigurationMap(@NonNull
Map<AudioAttributes, CarAudioFadeConfiguration> attrsToCarAudioFadeConfig) {
}
والجدير بالذكر أنّ مصنّعي المعدات الأصلية يمكنهم اختيار استخدام إعدادات التلاشي عند بدء التشغيل المضبوطة مسبقًا أو تطبيق الإعدادات بشكل ديناميكي من خلال خدمة التركيز على الصوت المخصّصة، ما يتيح لهم التحكّم بشكل قابل للتكيّف.
مخطط التسلسل
يوضّح مخطط التسلسل هذا السلوك التالي لمنح تركيز الصوت إلى App2
ثم فقدان App1
لتركيز الصوت:
- عندما ترسل خدمة الصوت في السيارة إشارة فقدان التركيز الصوتي إلى
App1
، يتم إيقاف التشغيل تدريجيًا من مشغّلApp1
على النحو الذي تحددهFadeManagerConfiguration
النشطة. بعد اكتمال عملية التلاشي، يتلقّىApp1
دالة رد الاتصال العادية الخاصة بفقدان التركيز الصوتي. - يمكنك اختياريًا إعادة ظهور الصوت في
App1
بعد مدة زمنية قابلة للتعديل. يمكن لمصنّعي المعدات الأصلية ضبط هذه المدة من خلالBuilder#setFadeInDurationForUsage(int, long)
وفقًا لمتطلبات منتجاتهم المحدّدة.
الشكل 4. مخطط تسلسلي لميزة التلاشي في نظام الصوت داخل السيارة
إدارة التركيز على مناطق متعدّدة
بالنسبة إلى المركبات التي تتضمّن مناطق صوتية متعددة، تتم إدارة تركيز الصوت بشكل مستقل لكل منطقة. وبالتالي، لا يأخذ الطلب المقدَّم إلى منطقة واحدة في الاعتبار ما هو محل التركيز في المناطق الأخرى، ولا يؤدي إلى فقدان التركيز في المناطق الأخرى. وبفضل ذلك، يمكن إدارة تركيز المقصورة الرئيسية بشكل منفصل عن نظام الترفيه في المقعد الخلفي، وبالتالي عدم مقاطعة تشغيل الصوت في منطقة واحدة بسبب التغييرات التي تم إجراؤها في التركيز على منطقة أخرى.
بالنسبة إلى جميع التطبيقات، يدير CarAudioService
التركيز تلقائيًا. يتم تحديد منطقة الصوت الخاصة بطلب التركيز من خلال UserId
أو UID
المرتبطَين به (للحصول على التفاصيل، يُرجى الاطّلاع على توجيه الصوت إلى مناطق متعددة).
طلب الصوت من مناطق متعددة في الوقت نفسه
إذا كان أحد التطبيقات يريد تشغيل الصوت في مناطق متعددة في الوقت نفسه، يجب أن يطلب التركيز لكل منطقة من خلال تضمين AUDIOFOCUS_EXTRA_REQUEST_ZONE_ID
في الحزمة:
//Create attribute with bundle and AUDIOFOCUS_EXTRA_REQUEST_ZONE_ID
Bundle bundle = new Bundle();
bundle.putInt(CarAudioManager.AUDIOFOCUS_EXTRA_REQUEST_ZONE_ID,
zoneId);
AudioAttributes attributesWithZone = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_MEDIA)
.addBundle(bundle)
.build();
//Create focus request using built attributesWithZone
تتيح مَعلمة الحزمة هذه لمقدّم الطلب تجاهل عمليات الربط التلقائية بين المناطق الصوتية واستخدام رقم تعريف المنطقة المحدّد بدلاً من ذلك. لذلك، يمكن أن يرسل التطبيق طلبات منفصلة لمناطق صوتية مختلفة.
أولوية الصوت في طبقة تجريد الأجهزة (HAL)
بدءًا من الإصدار 11 من نظام التشغيل Android، يتم تفعيل طبقة HAL لطلب التركيز نيابةً عن عمليات البث الخارجية. على الرغم من أنّ استخدام واجهات برمجة التطبيقات هذه اختياري، ننصح بشدة باستخدامها لضمان مشاركة الأصوات الخارجية على النحو الأمثل في منظومة Android المتكاملة وتقديم تجربة سلسة للمستخدمين.
تتخذ طبقة HAL القرار النهائي بشأن الأصوات التي يجب أن تحظى بالأولوية. وفي هذا الصدد، يجب تشغيل الأصوات المهمة المتعلقة بالسلامة وحالات الطوارئ بغض النظر عما إذا كان HAL قد حصل على تركيز الصوت أم لا، ويجب مواصلة تشغيلها حسب الاقتضاء حتى إذا فقد HAL تركيز الصوت. وينطبق الأمر نفسه على أي أصوات تتطلّبها اللوائح الحكومية.
يجب أن تعمل طبقة تجريد الأجهزة (HAL) بشكل استباقي على كتم صوت بث Android حسب الاقتضاء عند تشغيل أصوات الطوارئ أو الأصوات المهمة للسلامة لضمان سماعها بوضوح.
AudioControl@2.0
يقدّم الإصدار 2.0 من طبقة تجريد الأجهزة (HAL) الخاصة بـ AudioControl واجهات برمجة التطبيقات الجديدة التالية:
واجهة برمجة التطبيقات | الغرض |
---|---|
IAudioControl#registerFocusListener |
تسجيل مثيل من IFocusListener باستخدام واجهة HAL الخاصة بـ AudioControl يتيح هذا المستمع لطبقة تجريد الأجهزة (HAL) طلب التركيز الصوتي وإلغاء طلبه. توفّر طبقة HAL مثيلاً من ICloseHandle يستخدمه نظام Android لإلغاء تسجيل أداة معالجة الأحداث. |
IAudioControl#onAudioFocusChange |
يُعلم هذا الحقل طبقة HAL بالتغييرات في حالة طلبات التركيز التي تقدّمها طبقة HAL
من خلال IFocusListener ، بما في ذلك الردود على طلبات التركيز الأولية. |
IFocusListener#requestAudioFocus |
تركز الطلبات نيابةً عن HAL على استخدام محدّد ومعرّف منطقة ونوع زيادة التركيز. |
IFocusListener#abandonAudioFocus |
تتجاهل هذه السمة طلبات التركيز الحالية في HAL للاستخدام والمنطقة المحدّدين Id. |
يمكن أن يتضمّن HAL طلبات تركيز متعددة في الوقت نفسه، ولكن يقتصر على طلب واحد لكل استخدام ولكل زوج من أرقام التعريف الخاصة بالمناطق. يفترض نظام التشغيل Android أنّ طبقة تجريد الأجهزة (HAL) تبدأ على الفور في تشغيل الأصوات عند الاستخدام بمجرد تقديم طلب، وتستمر في ذلك إلى أن تتوقف عن التركيز.
بخلاف registerFocusListener
، تكون هذه الطلبات oneway
لضمان عدم تأخير Android لطبقة HAL أثناء معالجة طلب التركيز. يجب ألا ينتظر HAL إلى أن يتم التركيز عليه قبل تشغيل الأصوات المهمة للسلامة. وهو اختياري
بالنسبة إلى طبقة تجريد الأجهزة (HAL) للاستماع إلى التغييرات في التركيز الصوتي والاستجابة لها من خلال
IAudioControl#onAudioFocusChange
.
خدمة أولويّة الصوت في السيارة من المصنّع الأصلي للجهاز
في نظام التشغيل Android 14، قدّمت AAOS خدمات إضافية خاصة بمصنّع السيارة الأصلي تتيح إمكانية ضبط بعض مكوّنات السيارة. بالنسبة إلى خدمة المكوّن الإضافي لتطبيق Car Audio، تتيح خدمة المكوّن الإضافي للمصنّعين الأصليين إدارة طلبات التركيز التي تعترضها خدمة Car Audio. يمنح ذلك الشركات المصنّعة للمعدات الأصلية المزيد من المرونة في ما يتعلّق بإدارة التركيز حسب ما تتطلّبه القواعد واللوائح التنظيمية. وبالتالي، قد يختلف تفاعل ميزة "تركيز الصوت" بين الشركات المصنّعة ومن منطقة إلى أخرى. لا يزال المبدأ الأساسي للتركيز على الصوت ساريًا، وهو أنّ التطبيقات يجب أن تطلب التركيز على الصوت من أجل إدارة الصوت بشكل أفضل وتحسين تجربة المستخدم. بشكل عام، لا تزال بعض القواعد تنطبق على طلبات التطبيقات للحصول على تركيز الصوت:
بدون أي تركيز صوتي دائم وعالي الأولوية (بما في ذلك مكالمة هاتفية أو تنبيه طوارئ أو إشعار أمان)، يجب أن تتمكّن التطبيقات من الحصول على تركيز صوتي إما بشكل مؤقت أو دائم.
عندما يكون وضع "تركيز على الوسائط" نشطًا:
يجب أن تتمكّن التطبيقات التي تطلب التركيز على استخدام المكالمات من تلقّي المكالمة إما بشكل متزامن أو حصري.
يجب أن تكون التطبيقات التي تطلب التركيز على استخدام التنقّل قادرة على تلقّي التركيز على التنقّل إما بشكل متزامن أو حصري.
يجب أن تتمكّن التطبيقات التي تطلب التركيز على استخدام المساعد من تلقّي التركيز على الاستخدام إما بشكل متزامن أو حصري.
أثناء نشاط التطبيقات التي تتطلّب تركيزًا صوتيًا عالي الأولوية (بما في ذلك مكالمة هاتفية أو تنبيه طوارئ أو إشعار أمان)، يجب منح أي طلب وارد للحصول على التركيز الصوتي المتأخر أو تأخيره حسب الحاجة.
مع أنّ هذه الاقتراحات ليست شاملة، يمكن أن تساعد التطبيقات التي تطلب التركيز في الحصول عليه إذا لم تكن هناك أصوات نشطة ذات أولوية عالية. حتى عندما تكون الأصوات ذات الأولوية العالية نشطة، يجب أن تظل طلبات التركيز المتأخرة سارية، ويجب أن تتمكّن من التركيز عندما يتوقف الصوت ذو الأولوية العالية.