डिट्रैक्शन ऑप्टिमाइज़ेशन (ऐसा करें) को सेटिंग ऐप्लिकेशन से ड्राइवर के इंटरैक्शन को कम करने के लिए एक टूल के रूप में उपलब्ध कराया जाता है. कार चल रही है. गाड़ी चलाते समय कुछ सेटिंग को बदलना पड़ सकता है, इसलिए ऐप्लिकेशन को पूरी तरह से ब्लॉक किया गया. हालांकि, डिफ़ॉल्ट रूप से, अधिकांश प्राथमिकताएं केवल कुंजी और आसानी से अपडेट की गई प्राथमिकताएं चालू की जा रही हैं.
पहली इमेज. गाड़ी चलाते समय ऐप्लिकेशन चालू करें
अगर ध्यान भटकाने वाली चीज़ों को ऑप्टिमाइज़ न किया गया हो, तो पूरी गतिविधियों को भी ब्लॉक किया जा सकता है. जैसा कि नीचे दिखाया गया है. फ़िलहाल, इस तरीके का इस्तेमाल सेटिंग खोज के लिए किया जाता है.
दूसरी इमेज. सभी गतिविधियां ब्लॉक की गईं
'क्या करें' की परफ़ॉर्मेंस में बुनियादी कस्टमाइज़ेशन कॉन्फ़िगरेशन के ज़रिए किए जा सकते हैं ओवरले करें. अगर आपको ज़्यादा बारीकी से कस्टमाइज़ेशन करने की ज़रूरत है, तो कुछ और बदलाव करने से कोड का इस्तेमाल करके किया जा सकता है.
बेहतर क्वालिटी का कस्टमाइज़ेशन
जब गाड़ी चलाते समय किसी प्राथमिकता को बंद किया जाता है, तो उस पर टैप करने से टोस्ट दिखता है
यह बताने वाला मैसेज कि ड्राइविंग करते समय प्राथमिकता उपलब्ध नहीं है,
के साथ एक प्राथमिकता कंट्रोलर जुड़ा हुआ है. यह मैसेज
restricted_while_driving
स्ट्रिंग, जिसे ओवरले की मदद से पसंद के मुताबिक बनाया जा सकता है
(बशर्ते स्ट्रिंग 60 वर्ण की सीमा से कम हो).
तीसरी इमेज. पसंद के मुताबिक बनाया गया ओवरले
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
में जोड़ें.
इसमें कॉन्फ़िगरेशन के लिए सिस्टम, भाषाएं और इनपुट, और 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>
ज़्यादा जानकारी के साथ पसंद के मुताबिक बनाने की सुविधा
कुछ ऐसी प्राथमिकताएं होती हैं जिन्हें पसंद के मुताबिक बनाने की ज़रूरत हो सकती है. ये प्राथमिकताएं, सिर्फ़ ड्राइविंग की स्थिति के आधार पर किसी प्राथमिकता को चालू/बंद कर सकते हैं. उदाहरण के लिए, सेव किए गए ब्लूटूथ डिवाइस को दिखाने के लिए, ब्लूटूथ और वाई-फ़ाई में पहले ही बदलाव कर दिया गया है या गाड़ी चलाते समय वाई-फ़ाई ऐक्सेस पॉइंट.
फ़िलहाल, कॉन्फ़िगरेशन पर आधारित ऐसा कोई समाधान उपलब्ध नहीं है जिसकी मदद से इस तरह के विज्ञापन
में बदलाव कर सकते हैं. इसके बजाय, आप एक ऐसी कस्टम क्लास बना सकते हैं जो
PreferenceController और onApplyUxRestrictions()
को बदल देता है, ताकि ज़रूरत पड़ने पर
बदलाव.
जब पसंद के मुताबिक प्राथमिकता कंट्रोलर बनाया जाता है, तो आपके पास उससे जुड़ी एक्सएमएल फ़ाइल को ओवरले करने का विकल्प होता है का इस्तेमाल करें.
उदाहरण
CarSettings में, कुछ प्राथमिकताओं में यह ज़्यादा कस्टमाइज़ किया गया व्यवहार होता है. जैसे का इस्तेमाल अतिरिक्त कस्टमाइज़ेशन के लिए उदाहरण के तौर पर किया गया है. उदाहरण के लिए, वाई-फ़ाई ऐक्सेस पॉइंट सूची में, आपकी पसंद का विकल्प यह है कि गाड़ी चलाते समय (और बाकी को छिपाकर) ही, सेव किए गए ऐक्सेस पॉइंट दिखाए जाएं. ऐसा करने के लिए, ये काम करें:
} 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); } }