रूटीन के हिसाब से बैटरी सेवर मोड

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

डिवाइस कॉन्फ़िगरेशन

सेवा देने वाली कंपनी की जानकारी

सेटिंग यूज़र इंटरफ़ेस (यूआई) को यह सूचना देने के लिए कि डिवाइस को सही तरीके से कॉन्फ़िगर किया गया है, अपने कॉन्फ़िगर ओवरले का इस्तेमाल करके 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 अनुमति दें और उसे रूटीन के आधार पर काम करने वाले एपीआई को कंट्रोल करने की अनुमति दें. का व्यवहार जब एक से ज़्यादा ऐप्लिकेशन अनुमति और एपीआई इस्तेमाल करने की कोशिश करते हैं, तो यह सुविधा असमर्थित और अनिर्दिष्ट.

बैटरी सेवर मोड चालू करना

API

मान लें कि सेटअप अब तक पूरा हो गया है. ऐसे में, कॉन्फ़िगरेशन में बताए गए OEM ऐप्लिकेशन को बैटरी सेवर को ट्रिगर करने के लिए, PowerManager में उससे जुड़े तरीके को कॉल करना चाहिए:

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

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