การเพิ่มประสิทธิภาพเพื่อลดการเสียสมาธิในการตั้งค่ารถยนต์

การเพิ่มประสิทธิภาพเพื่อลดสิ่งรบกวน (DO)มีไว้เป็นเครื่องมือในการลดการโต้ตอบของผู้ขับขี่กับแอปการตั้งค่าขณะที่รถกำลังเคลื่อนที่ คุณอาจต้องเปลี่ยนการตั้งค่าบางอย่างขณะขับรถเพื่อไม่ให้แอปถูกบล็อกโดยสมบูรณ์ อย่างไรก็ตาม ค่ากําหนดส่วนใหญ่จะปิดอยู่โดยค่าเริ่มต้น โดยมีการเปิดใช้เฉพาะค่ากําหนดที่สําคัญและอัปเดตได้ง่าย

แอปที่เปิดใช้ขณะขับรถ

รูปที่ 1 แอปที่เปิดใช้ขณะขับรถ

นอกจากนี้ คุณยังบล็อกกิจกรรมทั้งหมดได้หากไม่ได้เพิ่มประสิทธิภาพเพื่อลดสิ่งรบกวน ดังที่แสดงด้านล่าง ปัจจุบันมีการใช้วิธีการนี้กับการค้นหาการตั้งค่าเป็นหลัก

บล็อกกิจกรรมทั้งหมด

รูปที่ 2 กิจกรรมทั้งหมดถูกบล็อก

การปรับแต่งพื้นฐานเพื่อประสิทธิภาพของ DO ทำได้ผ่านการกำหนดค่าซ้อนทับ หากต้องการการปรับแต่งแบบละเอียดยิ่งขึ้น คุณจะทำการเปลี่ยนแปลงเพิ่มเติมผ่านโค้ดได้

การปรับแต่งระดับสูง

เมื่อปิดใช้ค่ากําหนดขณะขับรถ การแตะค่ากําหนดจะแสดงข้อความโต้ตอบที่ระบุว่าค่ากําหนดไม่พร้อมใช้งานขณะขับรถ หากค่ากําหนดมีตัวควบคุมค่ากําหนดอยู่ ข้อความใช้สตริง 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.

เพื่อให้แน่ใจว่าผู้ใช้โต้ตอบกับค่ากําหนดได้จริง

ตัวอย่าง

ตัวอย่างนี้แสดงวิธีเปิดใช้การตั้งค่าที่ฝังลึกขณะขับรถ โดยแสดงให้เห็นวิธีเปิดใช้การตั้งค่าเอาต์พุตการอ่านออกเสียงข้อความ (TTS) หากต้องการให้การดําเนินการนี้ทํางาน ให้เพิ่มการตั้งค่าทั้งหมดในลําดับชั้นลงใน config_ignore_ux_restrictions ซึ่งรวมถึงระบบ ภาษาและการป้อนข้อมูล รวมถึงค่ากำหนด TTS ในการกำหนดค่า เนื่องจากลําดับชั้นของเราคือระบบ->ภาษาและการป้อนข้อมูล->เอาต์พุตการอ่านออกเสียงข้อความ อย่างไรก็ตาม ค่ากําหนดภายในข้อมูลโค้ดการอ่านออกเสียงข้อความจะยังคงปิดอยู่ หากต้องการเปิดใช้ เราจำเป็นต้องเพิ่มคีย์สำหรับค่ากําหนดที่ต้องการเข้าถึง ในตัวอย่างนี้ เราต้องการเปิดใช้ค่ากําหนดการเล่น แต่ไม่ต้องการเปิดใช้ค่ากําหนดของเครื่องมือ จึงเพิ่ม 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);
    }
}