تحسين الإلهاء في إعدادات السيارة

تحسين الإلهاء (DO) أداة لتقليل تفاعل السائق مع تطبيق "الإعدادات" أثناء تتحرك السيارة. قد يلزم تغيير بعض الإعدادات أثناء القيادة، ولذلك لن يتم تطبيق التغييرات محظور تمامًا. ومع ذلك، يتم تعطيل معظم التفضيلات بشكل افتراضي من خلال استخدام مفتاح تمكين التفضيلات التي تم تحديثها بسهولة.

التطبيقات المفعّلة أثناء القيادة

الشكل 1. تفعيل التطبيقات أثناء القيادة

يمكن أيضًا حظر الأنشطة بأكملها إذا لم يتم تحسين تشتيت الانتباه، كما هو موضح أدناه. تُستخدم هذه الطريقة حاليًا بشكل أساسي للبحث في الإعدادات.

تم حظر جميع الأنشطة

الشكل 2. تم حظر جميع الأنشطة

يمكن إجراء عمليات التخصيص الأساسية على أداء الإجراء المطلوب من خلال عملية ضبط عند استخدام عناصر مركّبة. إذا كنت بحاجة إلى تخصيص أكثر دقة، يمكن إجراء تغييرات إضافية عن طريق التعليمات البرمجية.

تخصيص عالي المستوى

عند إيقاف أحد الإعدادات المفضّلة أثناء القيادة، يؤدي النقر عليها إلى عرض إشعار منبثق. تفيد بأن التفضيل غير متاح أثناء القيادة، شريطة أن يكون التفضيل لديه وحدة تحكم تفضيل مرتبطة به. تستخدم الرسالة سلسلة restricted_while_driving، التي يمكن تخصيصها باستخدام محتوى مركّب (شرط أن تكون السلسلة أقل من عدد الأحرف المسموح به وهو 60 حرفًا).

تراكب مخصّص

الشكل 3. تراكب مخصّص

يمكن إيقاف إطار عمل "الإجراء" بالكامل باستخدام config_always_ignore_ux_restrictions. إن تعيين هذا على "صحيح" يعني أنه يمكن للسائق التفاعل مع كل جانب من جوانب تطبيق "الإعدادات"

<bool name="config_always_ignore_ux_restrictions">true</bool>

في حال ضبط الإعدادات أعلاه على "خطأ"، يعود تطبيق "الإعدادات" إلى config_ignore_ux_restrictions لتحديد التفضيلات التي يجب تفعيلها أثناء القيادة. السلاسل المقدمة هنا يجب أن يشير إلى السلاسل المحددة في preference_keys.xml.

مثال

لتوضيح كيفية تفعيل إعداد مدمج بشكل كبير أثناء القيادة، إليك هذا المثال يوضح كيفية تفعيل إعدادات إخراج تحويل النص إلى كلام (TTS). لكي ينجح ذلك، إضافة جميع الإعدادات في التدرج الهرمي إلى 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 أثناء القيادة

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

عندما يتم إنشاء وحدة تحكم في الإعدادات المفضّلة المخصصة، يمكنك تركيب ملف XML ذي الصلة لاستبدال وحدة التحكم في الإعدادات المفضّلة الافتراضية بالتنفيذ الخاص بك.

أمثلة

في CarSettings، يكون هذا السلوك الأكثر تخصيصًا لبعض التفضيلات، والذي يمكن واستخدامها كأمثلة لمزيد من التخصيص. على سبيل المثال، في قائمة نقاط وصول Wi-Fi، السلوك المطلوب هو إظهار نقاط الوصول المحفوظة فقط أثناء القيادة (وإخفاء الباقي). لتحقيق ذلك، قم بما يلي:

} else if (shouldApplyUxRestrictions(getUxRestrictions())) {
    wifiEntries = getCarWifiManager().getSavedWifiEntries();
} else {
    wifiEntries = getCarWifiManager().getAllWifiEntries();
}

نظرًا لفرض قيود على نقاط الوصول التي تظهر هنا، يمكنك لا تريد تطبيق UxRestrictions إضافية على هذه الإعدادات المفضّلة. ولذلك، يجب إلغاء onApplyUxRestrictions وتنفيذ هدف no-op:

@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);
    }
}