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