การเพิ่มประสิทธิภาพการรบกวน (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); } }