नियमित बैटरी सेवर

एंड्रॉइड 10 एक बैटरी सेवर शेड्यूल विकल्प पेश करता है जिसे रूटीन पर आधारित कहा जाता है। यह विकल्प OEM द्वारा चुने गए ऐप को अधिक बुद्धिमान बैटरी सेवर शेड्यूलिंग के लिए सिस्टम को सिग्नल प्रदान करने की अनुमति देता है। इस विकल्प के लिए कॉन्फ़िगरेशन की आवश्यकता है, और इसे लागू करना वैकल्पिक है।

उपकरण का प्रारूप

प्रदाता विशिष्टता

सेटिंग्स यूआई को सूचित करने के लिए कि डिवाइस सही तरीके से कॉन्फ़िगर किया गया है, अपने ऐप के पैकेज नाम के साथ config_batterySaverScheduleProvider मान को ओवरराइड करने के लिए अपने कॉन्फिग ओवरले का उपयोग करें।

उदाहरण के लिए, यदि आप चाहते हैं कि ऐप पैकेज com.google.android.apps.turbo नियमित सेटिंग के आधार पर नियंत्रित हो, तो आप यह कॉन्फ़िगरेशन मान सेट करेंगे:

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

अब फोन में बेस्ड ऑन रूटीन का विकल्प दिखना चाहिए। सत्यापित करने के लिए, अपनी छवि बनाएं, इसे फ़ोन पर फ़्लैश करें, और सेटिंग्स > बैटरी > बैटरी सेवर > बैटरी सेवर शेड्यूल पर नेविगेट करें। रूटीन पर आधारित विकल्प दिखना चाहिए।

डिफ़ॉल्ट सीमा से बाहर

नया config_dynamicPowerSavingsDefaultDisableThreshold फ़ील्ड एक बैटरी स्तर निर्दिष्ट करता है जिस पर सिस्टम बैटरी सेवर को बंद कर देता है, यदि इसे रूटीन शेड्यूलर के आधार पर चालू किया गया हो। सिस्टम डिफ़ॉल्ट 80% है, लेकिन आप इसे बदल सकते हैं।

ऐप कॉन्फ़िगरेशन

अनुमतियां

ऐप से बैटरी सेवर चालू करने के लिए आवश्यक एपीआई android.permission.POWER_SAVER अनुमति द्वारा संरक्षित हैं। यह एक हस्ताक्षर/विशेषाधिकार प्राप्त अनुमति है, इसलिए जिस ऐप को आप बैटरी सेवर ट्रिगर करने में सक्षम बनाना चाहते हैं उसे अपनी privapp-whitelist में यह अनुमति दें।

किसी ऐप को privapp अनुमति देने का एक उदाहरण:

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

यदि आप सिस्टम छवि पर ऐप के संस्करण को यह अनुमति पूर्व-अनुदान नहीं देते हैं, तो ऐप अनुमति प्राप्त नहीं कर सकता है या एपीआई को ठीक से कॉल नहीं कर सकता है। सिस्टम सामान्य अनुमति त्रुटियों से परे कोई प्रतिक्रिया प्रदान नहीं करता है, इसलिए सत्यापित करें कि आप एपीआई को कॉल कर सकते हैं और उनके प्रभावों का निरीक्षण कर सकते हैं।

इंस्टालेशन

रूटीन के आधार पर ठीक से काम करने के लिए, आपको आवश्यक अनुमति के साथ सिस्टम इमेज पर ऐप को प्री-इंस्टॉल करना होगा। केवल एक ऐप को POWER_SAVER अनुमति दें और उसे नियमित एपीआई के आधार पर नियंत्रित करने की अनुमति दें। जब एक से अधिक ऐप अनुमति और एपीआई का उपयोग करने का प्रयास करते हैं तो सुविधा का व्यवहार असमर्थित और अनिर्दिष्ट होता है।

बैटरी सेवर चालू हो रहा है

शहद की मक्खी

यह मानते हुए कि सेटअप अब तक सफल है, कॉन्फ़िगरेशन में निर्दिष्ट ओईएम ऐप बैटरी सेवर को ट्रिगर करने के लिए पावरमैनेजर में संबंधित विधि को सफलतापूर्वक कॉल करने में सक्षम होना चाहिए:

public boolean setDynamicPowerSaveHint(boolean powerSaveHint, int disableThreshold)

यदि रूटीन बैटरी सेवर शेड्यूल पर आधारित विकल्प सक्षम है और ऐप इस विधि को powerSaveHint के लिए true मान के साथ कॉल करता है, तो बैटरी सेवर चालू हो जाता है। disableThreshold निर्दिष्ट करें ताकि यदि ऐप सिस्टम के साथ संचार नहीं कर सके, तो सिस्टम को अभी भी पता चले कि किस बैटरी प्रतिशत पर बैटरी सेवर को बंद करना सुरक्षित है।

यह एपीआई प्रतिशत-आधारित स्वचालित बैटरी सेवर की तरह ही उपयोगकर्ता ओवरराइड और बैटरी सेवर स्नूज़िंग के अधीन है। अधिक जानकारी के लिए एपीआई दस्तावेज़ देखें।

यह सत्यापित करने के लिए कि एपीआई को सफलतापूर्वक कॉल किया गया है, क्वेरी सेटिंग्स यह सत्यापित करने के लिए वैश्विक हैं कि एपीआई कॉल के अनुसार बैकिंग सेटिंग का मान बदल गया है।

उदाहरण के लिए, यदि उपयोगकर्ता ने नियमित बैटरी सेवर मोड का चयन किया है और ऐप 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 किस व्यवहार का उपयोग करेगा। इस प्रकार ओईएम यह सुनिश्चित करने के लिए अपने एकीकरण का परीक्षण करने के लिए जिम्मेदार हैं कि व्यवहार अपेक्षाओं को पूरा करता है। विशेष रूप से, सत्यापित करें कि डिवाइस निम्नलिखित कार्य पूरा कर सकता है:

  • उपयोगकर्ता बैटरी सेवर शेड्यूल यूआई में प्रतिशत के आधार पर चयन करता है और 15% का चयन करता है। बैटरी सेवर केवल 15% बैटरी खत्म होने पर ही स्वचालित रूप से चालू होना चाहिए।
  • उपयोगकर्ता बैटरी सेवर शेड्यूल यूआई में रूटीन के आधार पर चयन करता है। जब ऐप एपीआई को true के साथ कॉल करता है, तो बैटरी सेवर चालू हो जाता है। इसके अतिरिक्त, यदि डिवाइस को निर्दिष्ट थ्रेशोल्ड स्तर पर चार्ज किया जाता है और अनप्लग किया जाता है तो बैटरी सेवर स्वचालित रूप से बंद हो जाता है।
  • उपयोगकर्ता बैटरी सेवर शेड्यूल यूआई में कोई नहीं चुनता है। बैटरी सेवर कभी भी स्वचालित रूप से चालू नहीं होना चाहिए।
  • यदि ऐप बैटरी सेवर को चालू करता है और उपयोगकर्ता मैन्युअल रूप से बैटरी सेवर को फिर से बंद करने के लिए ओवरराइड करता है (त्वरित सेटिंग्स, सेटिंग्स आदि का उपयोग करके), तो इसे तब तक बंद रहना चाहिए जब तक कि उपयोगकर्ता इसे मैन्युअल रूप से फिर से चालू न कर दे या डिवाइस को प्लग इन न कर दे।