ডিস্ট্রাকশন অপ্টিমাইজেশান (ডিও) একটি গাড়ি চলাকালীন সেটিংস অ্যাপের সাথে ড্রাইভারের মিথস্ক্রিয়া কমাতে একটি সরঞ্জাম হিসাবে সরবরাহ করা হয়। ড্রাইভিং করার সময় কিছু সেটিংস পরিবর্তন করতে হতে পারে, তাই অ্যাপটি সম্পূর্ণরূপে অবরুদ্ধ নয়৷ যাইহোক, ডিফল্টরূপে, বেশিরভাগ পছন্দগুলি শুধুমাত্র কী এবং সহজে আপডেট করা পছন্দগুলি সক্ষম করে অক্ষম করা হয়।
চিত্র 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.
উদাহরণ
গাড়ি চালানোর সময় কীভাবে একটি গভীরভাবে নেস্টেড সেটিং সক্ষম করা যায় তা দেখানোর জন্য, এই উদাহরণটি দেখায় কিভাবে পাঠ্য-টু-স্পীচ (টিটিএস) আউটপুট সেটিংস সক্ষম করতে হয়। এটি কাজ করার জন্য, 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>
বিস্তারিত কাস্টমাইজেশন
ড্রাইভিং অবস্থার উপর ভিত্তি করে একটি পছন্দ সক্রিয়/অক্ষম করার চেয়ে আরও কাস্টমাইজড আচরণের প্রয়োজন হতে পারে এমন কিছু পছন্দ রয়েছে। উদাহরণস্বরূপ, ড্রাইভিং করার সময় সংরক্ষিত ব্লুটুথ ডিভাইস বা ওয়াই-ফাই অ্যাক্সেস পয়েন্টগুলি দেখানোর জন্য ব্লুটুথ এবং ওয়াই-ফাই ইতিমধ্যেই পরিবর্তন করা হয়েছে৷
বর্তমানে এই ধরনের সমন্বয় করার জন্য কোন কনফিগারেশন ভিত্তিক সমাধান নেই। পরিবর্তে আপনি একটি কাস্টম ক্লাস তৈরি করতে পারেন যা পছন্দসই কন্ট্রোলারকে প্রসারিত করে এবং পছন্দসই পরিবর্তনগুলি করতে onApplyUxRestrictions()
ওভাররাইড করে।
যখন একটি কাস্টম পছন্দ নিয়ামক তৈরি করা হয়, আপনি আপনার নিজস্ব বাস্তবায়নের সাথে ডিফল্ট পছন্দ নিয়ামক প্রতিস্থাপন করতে প্রাসঙ্গিক XML ফাইলটি ওভারলে করতে পারেন।
উদাহরণ
CarSetting-এ, কিছু পছন্দের এই আরও কাস্টমাইজড আচরণ রয়েছে, যা অতিরিক্ত কাস্টমাইজেশনের উদাহরণ হিসেবে ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, ওয়াই-ফাই অ্যাক্সেস পয়েন্ট তালিকায় , পছন্দসই আচরণ হল গাড়ি চালানোর সময় শুধুমাত্র সংরক্ষিত অ্যাক্সেস পয়েন্টগুলি দেখানো (এবং বাকিগুলি লুকিয়ে রাখা)। এটি অর্জন করতে, নিম্নলিখিতগুলি করুন:
} 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); } }