অ্যান্ড্রয়েড ১০ একটি ব্যাটারি সেভার শিডিউল অপশন চালু করেছে যার নাম Based on routine । এই অপশনটি OEM দ্বারা নির্বাচিত একটি অ্যাপকে আরও বুদ্ধিমান ব্যাটারি সেভার শিডিউলিংয়ের জন্য সিস্টেমে সিগন্যাল সরবরাহ করতে দেয়। এই অপশনটির কনফিগারেশন প্রয়োজন এবং এটি বাস্তবায়ন করা ঐচ্ছিক।
ডিভাইস কনফিগারেশন
এই বিভাগটি বর্ণনা করে যে কীভাবে আপনার ডিভাইসটিকে "Based on routine " বিকল্পের জন্য কনফিগার করবেন।
সরবরাহকারীর স্পেসিফিকেশন
ডিভাইসটি সঠিকভাবে কনফিগার করা হয়েছে তা সেটিংস UI-তে জানানোর জন্য, আপনার অ্যাপের প্যাকেজ নামের সাথে config_batterySaverScheduleProvider মানটি ওভাররাইড করতে আপনার কনফিগার ওভারলে ব্যবহার করুন। উদাহরণস্বরূপ, যদি আপনি চান যে অ্যাপ প্যাকেজ com.google.android.apps.turbo বেসড অন রুটিন সেটিং নিয়ন্ত্রণ করুক, তাহলে এই কনফিগার মানটি সেট করুন:
<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>
যাচাই করতে, আপনার ছবি তৈরি করুন, এটি একটি ডিভাইসে ফ্ল্যাশ করুন এবং সেটিংসে নেভিগেট করুন।
ব্যাটারি > ব্যাটারি সেভার > ব্যাটারি সেভার সময়সূচী । বেসড অন রুটিন বিকল্পটি প্রদর্শিত হবে।
ডিফল্ট অফ থ্রেশহোল্ড
config_dynamicPowerSavingsDefaultDisableThreshold ক্ষেত্রটি ব্যাটারির একটি স্তর নির্দিষ্ট করে যেখানে সিস্টেমটি Based on রুটিন শিডিউলার চালু করলে ব্যাটারি সেভার বন্ধ করে দেয়। সিস্টেমের ডিফল্ট মান 80%, তবে আপনি এটি পরিবর্তন করতে পারেন।
অ্যাপ কনফিগারেশন
এই বিভাগে বর্ণনা করা হয়েছে কিভাবে আপনার অ্যাপটিকে "Based on routine" বিকল্পটি ব্যবহার করার জন্য কনফিগার করবেন।
অনুমতিসমূহ
একটি অ্যাপের রুটিন ব্যাটারি সেভার সক্ষম করার জন্য প্রয়োজনীয় API গুলি android.permission.POWER_SAVER অনুমতি দ্বারা সুরক্ষিত। এটি একটি স্বাক্ষর বা বিশেষাধিকারপ্রাপ্ত অনুমতি। এর অর্থ হল অ্যাপটি অবশ্যই সিস্টেম চিত্রের একটি ব্যক্তিগত-অ্যাপ ডিরেক্টরিতে থাকতে হবে এবং আপনাকে স্পষ্টভাবে এই অনুমতিটি প্রদান করতে হবে।
বিশেষাধিকারপ্রাপ্ত অ্যাপগুলির জন্য, আপনাকে অ্যাপের মতো একই পার্টিশনে /etc/permissions/ ডিরেক্টরিতে একটি সিস্টেম কনফিগারেশন XML ফাইলে অনুমতি প্রদান করতে হবে। উদাহরণস্বরূপ, com.google.android.apps.turbo প্যাকেজ নামের একটি অ্যাপকে android.permission.POWER_SAVER অনুমতি প্রদান করতে:
<!-- File located at /etc/permissions/privapp-permissions-DEVICE_NAME.xml -->
<permissions>
<privapp-permissions package="com.google.android.apps.turbo">
<permission name="android.permission.POWER_SAVER"/>
</privapp-permissions>
</permissions>
যদি আপনি সিস্টেম ইমেজে থাকা অ্যাপটিকে এই অনুমতিটি প্রিগ্র্যান্ট না করেন, তাহলে অ্যাপটি অনুমতি পেতে বা API গুলিতে সফলভাবে কল করতে পারবে না। সিস্টেমটি স্ট্যান্ডার্ড অনুমতি ত্রুটির বাইরে কোনও প্রতিক্রিয়া প্রদান করে না, তাই অ্যাপটি API গুলিতে কল করতে এবং তাদের প্রভাব পর্যবেক্ষণ করতে পারে কিনা তা যাচাই করা অত্যন্ত গুরুত্বপূর্ণ।
স্থাপন
বেসড অন রুটিন সঠিকভাবে কাজ করার জন্য, আপনাকে সিস্টেম ইমেজে প্রয়োজনীয় অনুমতি সহ অ্যাপটি প্রি-ইন্সটল করতে হবে। শুধুমাত্র একটি অ্যাপকে android.permission.POWER_SAVER অনুমতি দিন এবং এটিকে বেসড অন রুটিন API গুলি নিয়ন্ত্রণ করতে দিন। যদি একাধিক অ্যাপ অনুমতি এবং API গুলি ব্যবহার করার চেষ্টা করে তবে বৈশিষ্ট্যটির আচরণ অসমর্থিত এবং অনির্দিষ্ট।
রুটিন ব্যাটারি সেভার ট্রিগার করুন
এই বিভাগটি বর্ণনা করে যে কীভাবে আপনার অ্যাপটি প্রদত্ত API গুলি ব্যবহার করে রুটিন ব্যাটারি সেভারের উপর ভিত্তি করে ট্রিগার করতে পারে।
এপিআই
যদি সেটআপ সফল হয়, তাহলে কনফিগারেশনে উল্লেখিত OEM অ্যাপটি ব্যাটারি সেভার ট্রিগার করার জন্য PowerManager এ সংশ্লিষ্ট পদ্ধতিতে সফলভাবে কল করতে পারে:
public boolean setDynamicPowerSaveHint(boolean powerSaveHint, int disableThreshold)
যদি Based on routine Battery Saver schedule অপশনটি সক্রিয় থাকে এবং অ্যাপটি powerSaveHint জন্য একটি true মান সহ এই পদ্ধতিটি কল করে, তাহলে ব্যাটারি সেভার চালু হবে। disableThreshold নির্দিষ্ট করুন যাতে অ্যাপটি সিস্টেমের সাথে যোগাযোগ করতে না পারে, তবুও সিস্টেমটি ব্যাটারির কত শতাংশে ব্যাটারি সেভার বন্ধ করা নিরাপদ তা জানতে পারে।
এই API ব্যবহারকারীর ওভাররাইড এবং ব্যাটারি সেভার স্নুজিংয়ের উপর নির্ভর করে, ঠিক যেমন শতাংশ-ভিত্তিক স্বয়ংক্রিয় ব্যাটারি সেভার ব্যবহার করে। আরও তথ্যের জন্য API ডকুমেন্টেশন দেখুন।
API গুলি সফলভাবে কল করা হয়েছে কিনা তা যাচাই করতে, API কল অনুসারে ব্যাকিং সেটিং মান পরিবর্তিত হয়েছে কিনা তা নিশ্চিত করতে গ্লোবাল সেটিংস অনুসন্ধান করুন। উদাহরণস্বরূপ, যদি আপনি Based on routine Battery Saver mode নির্বাচন করেন এবং অ্যাপটি setDynamicPowerSaveHint(true, 10) কল করে, তাহলে গ্লোবাল সেটিংসের এই মানগুলি থাকবে:
automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 10
dynamic_power_savings_enabled: 1
যদি আপনি setDynamicPowerSaveHint(false, 25) কল করেন, তাহলে মানগুলি হল:
automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 25
dynamic_power_savings_enabled: 0
আপনি এই adb কমান্ড ব্যবহার করে এই মানগুলি পরীক্ষা করতে পারেন:
adb shell settings get global <setting-name>
যাচাইকরণ
এই বৈশিষ্ট্যটি যাচাই করার কোনও স্বয়ংক্রিয় উপায় নেই কারণ OEM কোন আচরণটি ট্রিগার করে তা নির্ধারণ করে রুটিন ব্যাটারি সেভার মোডের উপর ভিত্তি করে । আচরণটি প্রত্যাশা পূরণ করে কিনা তা যাচাই করার জন্য OEM-গুলিকে তাদের ইন্টিগ্রেশন পরীক্ষা করতে হবে। বিশেষ করে, ডিভাইসটি নিম্নলিখিত কাজগুলি সম্পাদন করতে পারে কিনা তা যাচাই করুন:
- শতাংশের উপর ভিত্তি করে: যদি আপনি ব্যাটারি সেভার শিডিউল UI-তে শতাংশের উপর ভিত্তি করে নির্বাচন করেন এবং 15% নির্বাচন করেন, তাহলে ব্যাটারি 15% এ পৌঁছালেই ব্যাটারি সেভার স্বয়ংক্রিয়ভাবে চালু হয়।
- রুটিনের উপর ভিত্তি করে: যদি আপনি ব্যাটারি সেভার শিডিউল UI-তে বেসড রুটিন নির্বাচন করেন, তাহলে অ্যাপটি API-তে
trueকল করলে ব্যাটারি সেভার চালু হয়। এছাড়াও, যদি ডিভাইসটি নির্দেশিত থ্রেশহোল্ড স্তরে চার্জ হয় এবং আনপ্লাগ করা হয় তবে ব্যাটারি সেভার স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায়। - None: ব্যাটারি সেভার শিডিউল UI তে None নির্বাচন করলে, ব্যাটারি সেভার কখনই স্বয়ংক্রিয়ভাবে চালু হয় না।
- ম্যানুয়াল ওভাররাইড: যদি অ্যাপটি ব্যাটারি সেভার চালু করে এবং আপনি ম্যানুয়ালি ব্যাটারি সেভার ওভাররাইড করে এটি বন্ধ করেন ( কুইক সেটিংস , সেটিংস , বা অন্যান্য পদ্ধতি ব্যবহার করে), তাহলে এটি বন্ধ থাকে যতক্ষণ না আপনি এটিকে আবার ম্যানুয়ালি চালু করেন বা ডিভাইসটি প্লাগ ইন করেন।