ميزة "تحسين تشتيت الانتباه" (DO) : تُوفّر هذه الميزة كأداة لتقليل تفاعل السائق مع تطبيق "الإعدادات" أثناء تحرك السيارة. قد يكون عليك تغيير بعض الإعدادات أثناء القيادة كي لا يتم حظر التطبيق تمامًا. ومع ذلك، تكون معظم الإعدادات المفضّلة غير مفعّلة تلقائيًا، ولا يتم تفعيل سوى الإعدادات المفضّلة الرئيسية والتي يمكن تعديلها بسهولة.
الشكل 1: التطبيقات المفعَّلة أثناء القيادة
يمكن أيضًا حظر أنشطة كاملة إذا لم يتم تحسينها لتقليل التشتيت، كما هو موضّح أدناه. تُستخدَم هذه الطريقة حاليًا بشكل أساسي للبحث عن الإعدادات.
الشكل 2: جميع الأنشطة محظورة
يمكن إجراء عمليات التخصيص الأساسية لأداء "حملات الإعلانات الديناميكية على شبكة البحث" من خلال الإعدادات والطبقات. إذا كنت بحاجة إلى تخصيص أكثر دقة، يمكن إجراء تغييرات إضافية من خلال الرمز.
تخصيص على مستوى عالٍ
عند إيقاف أحد الإعدادات المفضّلة أثناء القيادة، يؤدي النقر عليه إلى عرض رسالة
تشير إلى أنّ الإعداد المفضّل غير متاح أثناء القيادة، شرط أن يكون الإعداد المفضّل
مرتبطًا بعنصر تحكّم في الإعدادات المفضّلة. تستخدم الرسالة السلسلة
restricted_while_driving
التي يمكن تخصيصها باستخدام تراكب
(شرط أن تكون السلسلة أقصر من الحد الأقصى البالغ 60 حرفًا).
الشكل 3: تراكب مخصّص
يمكن إيقاف إطار عمل DO بالكامل باستخدام config_always_ignore_ux_restrictions
.
ويعني ضبط هذه القيمة على "صحيح" أنّه يمكن للسائق التفاعل مع كل جانب من جوانب
تطبيق "الإعدادات".
<bool name="config_always_ignore_ux_restrictions">true</bool>
في حال ضبط الإعداد أعلاه على "خطأ"، يعود تطبيق "الإعدادات" إلى
config_ignore_ux_restrictions
لتحديد الإعدادات المفضّلة التي يجب تفعيلها أثناء القيادة. يجب أن تشير السلاسل المقدَّمة هنا
إلى السلاسل المحدّدة في preference_keys.xml.
.
مثال
لعرض كيفية تفعيل إعداد مُدمَج بعمق أثناء القيادة، يوضّح هذا المثال
كيفية تفعيل إعدادات "الرد الصوتي". لكي يعمل هذا الإجراء،
أضِف جميع الإعدادات في التسلسل الهرمي إلى config_ignore_ux_restrictions
.
ويشمل ذلك النظام واللغات والإدخال والإعدادات المفضّلة لميزة تحويل النص إلى كلام في الإعدادات، لأنّ التسلسل الهرمي هو:
النظام->اللغات والإدخال->ناتج تحويل النص إلى كلام. ومع ذلك، تظل الإعدادات المفضّلة
في المقتطف الخاص بتحويل النص إلى كلام غير مفعّلة. لتفعيلها،
علينا إضافة مفاتيح الإعدادات المفضّلة التي نريد الوصول إليها. في هذا
المثال، نريد تفعيل الإعدادات المفضّلة للتشغيل ولكن ليس الإعدادات المفضّلة لمحرك الصعوبة، لذا نضيف pk_tts_playback_group
إلى الإعدادات.
<string-array name="config_ignore_ux_restrictions"> [...] <item>@string/pk_system_settings_entry</item> <item>@string/pk_languages_and_input_settings</item> <item>@string/pk_tts_settings_entry</item> <item>@string/pk_tts_playback_group</item> </string-array>
تخصيص مفصّل
هناك بعض الإعدادات المفضّلة التي قد تتطلّب سلوكًا أكثر تخصيصًا من مجرّد تفعيل/إيقاف إعداد مفضّل استنادًا إلى حالة القيادة. على سبيل المثال، سبق أن تم تعديل البلوتوث وWi-Fi لعرض أجهزة البلوتوث المحفوظة أو نقاط اتصال Wi-Fi أثناء القيادة.
لا يتوفّر حاليًا حلّ يستند إلى الإعدادات لإجراء هذا النوع من
التعديلات. بدلاً من ذلك، يمكنك إنشاء فئة مخصّصة تمتد من
PreferenceController وتلغي onApplyUxRestrictions()
لإجراء التغيُّرات المطلوبة.
عند إنشاء وحدة تحكّم مخصّصة في الإعدادات المفضّلة، يمكنك تراكب ملف XML ذي الصلة لاستبدال وحدة التحكّم التلقائية في الإعدادات المفضّلة بتطبيقك الخاص.
أمثلة
في CarSettings، تتضمّن بعض الإعدادات المفضّلة هذا السلوك المخصّص بشكل أكبر، والذي يمكن استخدامه كأمثلة لتخصيص إضافي. على سبيل المثال، في قائمة نقاط اتصال Wi-Fi، هو السلوك المطلوب هو عرض نقاط الاتصال المحفوظة فقط أثناء القيادة (وإخفاء الباقي). لإجراء ذلك، اتّبِع الخطوات التالية:
} else if (shouldApplyUxRestrictions(getUxRestrictions())) { wifiEntries = getCarWifiManager().getSavedWifiEntries(); } else { wifiEntries = getCarWifiManager().getAllWifiEntries(); }
بما أنّ نقاط الوصول التي تظهر هنا محظورة،
لا تريد تطبيق UxRestrictions
إضافي على هذه الإعدادات المفضّلة.
لذلك، يمكنك إلغاء onApplyUxRestrictions
وتنفيذ عملية
غير مجدية:
@Override protected void onApplyUxRestrictions(CarUxRestrictions uxRestrictions) { // Since the list dynamically changes based on the UX restrictions, we // enable this fragment regardless of the restriction. Intentional no-op. }
يمكنك الاطّلاع على مثال آخر في مقالة الأجهزة المرتبطة عبر البلوتوث.
لمواصلة السماح بربط الأجهزة التي تتضمّن بلوتوث وفصلها، ولكن أردت
إيقاف إمكانية الوصول إلى الإعدادات الإضافية لهذه الأجهزة. لتحقيق ذلك، نلغى
مرة أخرى الإعداد onApplyUxRestrictions
، ولكن هذه المرة، إذا كان القيد NO_SETUP
نشطًا، سنخفي الإجراء الثانوي في الإعدادات المفضّلة.
@Override protected void onApplyUxRestrictions(CarUxRestrictions uxRestrictions) { super.onApplyUxRestrictions(uxRestrictions); if (CarUxRestrictionsHelper.isNoSetup(uxRestrictions)) { updateActionVisibility(getPreference(), /* isActionVisible= */ false); } }