রুটিন ব্যাটারি সেভার

অ্যান্ড্রয়েড 10 রুটিনের উপর ভিত্তি করে একটি ব্যাটারি সেভার সময়সূচী বিকল্প চালু করেছে। এই বিকল্পটি OEM দ্বারা নির্বাচিত একটি অ্যাপকে আরও বুদ্ধিমান ব্যাটারি সেভার শিডিউলিংয়ের জন্য সিস্টেমে সংকেত সরবরাহ করার অনুমতি দেয়। এই বিকল্পটির কনফিগারেশন প্রয়োজন, এবং এটি বাস্তবায়নের জন্য ঐচ্ছিক।

ডিভাইস কনফিগারেশন

প্রদানকারীর স্পেসিফিকেশন

ডিভাইসটি সঠিকভাবে কনফিগার করা হয়েছে সেটি সেটিংস UI-কে জানাতে, আপনার অ্যাপের প্যাকেজ নামের সাথে config_batterySaverScheduleProvider মানটিকে ওভাররাইড করতে আপনার কনফিগার ওভারলে ব্যবহার করুন।

উদাহরণস্বরূপ, আপনি যদি রুটিন সেটিং এর উপর ভিত্তি করে অ্যাপ প্যাকেজ com.google.android.apps.turbo নিয়ন্ত্রণ করতে চান, তাহলে আপনি এই কনফিগার মান সেট করবেন:

<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>

এখন ফোনে রুটিন ভিত্তিক বিকল্প দেখানো উচিত। যাচাই করতে, আপনার ছবি তৈরি করুন, এটি একটি ফোনে ফ্ল্যাশ করুন এবং সেটিংস > ব্যাটারি > ব্যাটারি সেভার > ব্যাটারি সেভার সময়সূচীতে নেভিগেট করুন। রুটিনের উপর ভিত্তি করে বিকল্পটি উপস্থিত হওয়া উচিত।

ডিফল্ট অফ থ্রেশহোল্ড

নতুন config_dynamicPowerSavingsDefaultDisableThreshold ক্ষেত্রটি একটি ব্যাটারি স্তর নির্দিষ্ট করে যেখানে সিস্টেম ব্যাটারি সেভার বন্ধ করে, যদি এটি রুটিন শিডিউলারের উপর ভিত্তি করে চালু করা হয়। সিস্টেম ডিফল্ট 80%, কিন্তু আপনি এটি পরিবর্তন করতে পারেন।

অ্যাপ কনফিগারেশন

অনুমতি

অ্যাপ থেকে ব্যাটারি সেভার চালু করার জন্য অ্যাপটির জন্য প্রয়োজনীয় API গুলি android.permission.POWER_SAVER অনুমতি দ্বারা সুরক্ষিত। এটি একটি স্বাক্ষর/সুবিধাপ্রাপ্ত অনুমতি, তাই আপনি যে অ্যাপটিকে ব্যাটারি সেভার ট্রিগার করতে চান সেটিকে আপনার privapp-whitelist অনুমতি দিন।

একটি অ্যাপকে privapp অনুমতি দেওয়ার একটি উদাহরণ:

<privapp-permissions package="com.google.android.apps.turbo">
   <permission name="android.permission.POWER_SAVER"/>
</privapp-permissions>

আপনি সিস্টেম ইমেজে অ্যাপের সংস্করণে এই অনুমতিটি আগে থেকে না দিলে, অ্যাপটি অনুমতি নিতে পারবে না বা সঠিকভাবে API-কে কল করতে পারবে না। সিস্টেমটি স্বাভাবিক অনুমতি ত্রুটির বাইরে কোনো প্রতিক্রিয়া প্রদান করে না, তাই যাচাই করুন যে আপনি API গুলিকে কল করতে পারেন এবং তাদের প্রভাবগুলি পর্যবেক্ষণ করতে পারেন৷

ইনস্টলেশন

রুটিনের উপর ভিত্তি করে সঠিকভাবে কাজ করার জন্য, আপনাকে প্রয়োজনীয় অনুমতি নিয়ে সিস্টেম ইমেজে অ্যাপটি আগে থেকে ইনস্টল করতে হবে। শুধুমাত্র একটি অ্যাপকে POWER_SAVER অনুমতি দিন এবং এটিকে রুটিন API-এর উপর ভিত্তি করে নিয়ন্ত্রণ করার অনুমতি দিন। বৈশিষ্ট্যের আচরণ যখন একাধিক অ্যাপ অনুমতি ব্যবহার করার চেষ্টা করে এবং APIগুলি অসমর্থিত এবং অনির্দিষ্ট থাকে।

ট্রিগার ব্যাটারি সেভার

এপিআই

ধরে নিই যে সেটআপ এখনও পর্যন্ত সফল হয়েছে, কনফিগারে নির্দিষ্ট করা OEM অ্যাপটি ব্যাটারি সেভার ট্রিগার করতে পাওয়ারম্যানেজারে সংশ্লিষ্ট পদ্ধতিটিকে সফলভাবে কল করতে সক্ষম হবে:

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 কী আচরণ ব্যবহার করবে তা জানার কোনও উপায় নেই৷ আচরণটি প্রত্যাশা পূরণ করে তা নিশ্চিত করার জন্য OEMs এইভাবে তাদের একীকরণ পরীক্ষা করার জন্য দায়ী। বিশেষ করে, ডিভাইসটি নিম্নলিখিত কাজগুলি পূরণ করতে পারে তা যাচাই করুন:

  • ব্যবহারকারী ব্যাটারি সেভার সময়সূচী UI-তে শতাংশের উপর ভিত্তি করে নির্বাচন করে এবং 15% নির্বাচন করে। 15% ব্যাটারি আঘাত করলেই ব্যাটারি সেভার স্বয়ংক্রিয়ভাবে চালু হওয়া উচিত।
  • ব্যবহারকারী ব্যাটারি সেভার সময়সূচী UI এর রুটিনের উপর ভিত্তি করে নির্বাচন করে। যখন অ্যাপটি true সাথে API কল করে, তখন ব্যাটারি সেভার চালু হয়। উপরন্তু, ব্যাটারি সেভার স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায় যদি ডিভাইসটি নির্দেশিত থ্রেশহোল্ড স্তরে চার্জ করা হয় এবং আনপ্লাগ করা হয়।
  • ব্যবহারকারী ব্যাটারি সেভার সময়সূচী UI এ কোনোটি নির্বাচন করেন না। ব্যাটারি সেভার কখনই স্বয়ংক্রিয়ভাবে চালু হওয়া উচিত নয়।
  • যদি অ্যাপটি ব্যাটারি সেভার চালু করে এবং ব্যবহারকারী ম্যানুয়ালি ব্যাটারি সেভারটিকে আবার বন্ধ করার জন্য ওভাররাইড করে (দ্রুত সেটিংস, সেটিংস, ইত্যাদি ব্যবহার করে), এটি বন্ধ থাকা উচিত যতক্ষণ না ব্যবহারকারী এটিকে আবার ম্যানুয়ালি আবার চালু করেন বা ডিভাইসটিকে প্লাগ ইন করেন।