Android 10-এ ব্যাটারি সেভার শিডিউল বিকল্প হিসেবে রুটিনের উপর ভিত্তি করে ফিচার যোগ করা হয়েছে। এই বিকল্পের মাধ্যমে OEM-এর বেছে নেওয়া অ্যাপ সিস্টেমকে সিগন্যাল পাঠাতে পারে যাতে আরও বুদ্ধিমত্তার সাথে ব্যাটারি সেভার শিডিউল করা যায়। এই বিকল্পের জন্য কনফিগারেশন প্রয়োজন এবং এটি প্রয়োগ করা ঐচ্ছিক।
ডিভাইস কনফিগারেশন
রুটিনের উপর ভিত্তি করে বিকল্পের জন্য কীভাবে আপনার ডিভাইস কনফিগার করবেন তা এই বিভাগে বর্ণনা করা হয়েছে।
পরিষেবা প্রদানকারীর স্পেসিফিকেশন
ডিভাইসটি সঠিকভাবে কনফিগার করা হয়েছে তা সেটিংস UI-কে জানাতে, আপনার
কনফিগারেশন ওভারলে ব্যবহার করে config_batterySaverScheduleProvider ভ্যালুকে আপনার অ্যাপের
প্যাকেজ নামের সাথে ওভাররাইড করুন। যেমন, আপনি যদি চান যে অ্যাপ প্যাকেজ
com.google.android.apps.turbo রুটিনের উপর ভিত্তি করে সেটিং কন্ট্রোল করুক, তাহলে
এই কনফিগারেশন ভ্যালু সেট করুন:
<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>
যাচাই করতে, আপনার ছবি তৈরি করুন, কোনও ডিভাইসে ফ্ল্যাশ করুন এবং সেটিংস বিকল্পে যান
ব্যাটারি > ব্যাটারি সেভার > ব্যাটারি সেভার শিডিউল। রুটিনের উপর ভিত্তি করে বিকল্পটি দেখা যাবে।
ডিফল্ট বন্ধ করার থ্রেশহোল্ড
config_dynamicPowerSavingsDefaultDisableThreshold ফিল্ডে ব্যাটারি লেভেল উল্লেখ করা থাকে। এই লেভেলে পৌঁছালে, রুটিন
ভিত্তিক শিডিউলার ব্যাটারি সেভার চালু করলে, সিস্টেম সেটি বন্ধ করে দেয়। সিস্টেম ডিফল্ট হিসেবে ৮০% সেট করা থাকে, তবে আপনি এটি পরিবর্তন করতে
পারেন।
অ্যাপ কনফিগারেশন
রুটিনের উপর ভিত্তি করে বিকল্প ব্যবহার করার জন্য কীভাবে আপনার অ্যাপ কনফিগার করবেন তা এই বিভাগে বর্ণনা করা হয়েছে।
অনুমতি
কোনও অ্যাপের জন্য রুটিন ব্যাটারি সেভার চালু করতে প্রয়োজনীয় API গুলিকে
android.permission.POWER_SAVER অনুমতি দিয়ে সুরক্ষিত করা হয়। এটি একটি স্বাক্ষর বা
বিশেষ অনুমতি। এর অর্থ হল, অ্যাপটিকে অবশ্যই সিস্টেম ইমেজে
একটি priv-app ডিরেক্টরিতে থাকতে হবে এবং আপনাকে স্পষ্টভাবে এই অনুমতি দিতে হবে।
বিশেষাধিকারপ্রাপ্ত অ্যাপের জন্য, আপনাকে অবশ্যই অ্যাপের মতো একই পার্টিশনে /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)
রুটিনের উপর ভিত্তি করে ব্যাটারি সেভার শিডিউল বিকল্প চালু করা থাকলে এবং অ্যাপটি powerSaveHint-এর জন্য true ভ্যালু সহ এই পদ্ধতি কল করলে, ব্যাটারি সেভার চালু
হয়ে যায়। disableThreshold উল্লেখ করুন যাতে অ্যাপটি সিস্টেমের সাথে যোগাযোগ করতে না পারলেও, সিস্টেমটি এখনও ব্যাটারির শতাংশ জানে যেটিতে ব্যাটারি সেভার বন্ধ করা
নিরাপদ।
এই API-তে ব্যবহারকারীর ওভাররাইড এবং ব্যাটারি সেভার স্নুজ করার সুবিধা আছে, ঠিক যেমন পার্সেন্টেজ-ভিত্তিক অটোমেটিক ব্যাটারি সেভারে থাকে। আরও তথ্যের জন্য API ডকুমেন্টেশন দেখুন।
API সঠিকভাবে কল করা হয়েছে কিনা তা যাচাই করতে, গ্লোবাল সেটিংস কোয়েরি করে
কনফার্ম করুন যে ব্যাক-আপ সেটিংসের ভ্যালু API কল অনুযায়ী পরিবর্তিত হয়েছে।
যেমন, আপনি যদি রুটিনের উপর ভিত্তি করে ব্যাটারি সেভার মোড বেছে নেন এবং অ্যাপ
কল করে 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-তে পার্সেন্টেজের উপর ভিত্তি করে বিকল্প বেছে নেন এবং ১৫% বেছে নেন, তাহলে ব্যাটারি ১৫%-এ পৌঁছালে ব্যাটারি সেভার অটোমেটিক চালু হয়ে যাবে।
- রুটিনের উপর ভিত্তি করে: আপনি ব্যাটারি
সেভার শিডিউল UI-তে রুটিনের উপর ভিত্তি করে বিকল্প বেছে নিলে, অ্যাপ API-কে
trueকল করলে ব্যাটারি সেভার চালু হয়ে যায়। এছাড়াও, ডিভাইসটি নির্দিষ্ট থ্রেশহোল্ড লেভেল পর্যন্ত চার্জ হলে এবং আনপ্লাগ করা থাকলে, ব্যাটারি সেভার অটোমেটিক বন্ধ হয়ে যায়। - কোনওটি নয়: আপনি ব্যাটারি সেভার শিডিউল UI-তে কোনওটি নয় বিকল্প বেছে নিলে, ব্যাটারি সেভার কখনও অটোমেটিক চালু হয় না।
- ম্যানুয়াল ওভাররাইড: অ্যাপ ব্যাটারি সেভার চালু করলে এবং আপনি ম্যানুয়ালি ব্যাটারি সেভার ওভাররাইড করে সেটি বন্ধ করলে (দ্রুত সেটিংস, সেটিংস বা অন্য পদ্ধতি ব্যবহার করে), আপনি ম্যানুয়ালি সেটি আবার চালু না করা পর্যন্ত অথবা ডিভাইসে চার্জ না দেওয়া পর্যন্ত সেটি বন্ধই থাকে।