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