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

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

मान लें कि अब तक सेटअप सही तरीके से हो गया है. ऐसे में, कॉन्फ़िगरेशन में बताया गया ओईएम ऐप्लिकेशन, 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>

पुष्टि

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

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