बैटरी रहित उपकरणों का समर्थन

यह पृष्ठ वर्णन करता है कि एंड्रॉइड उन उत्पादों को कैसे संभालता है जिनमें या तो हटाने योग्य बैटरी होती है या कोई आंतरिक बैटरी नहीं होती है। इसके बजाय बाद वाले डिवाइस किसी बाहरी पावर स्रोत से जुड़े होते हैं, जैसे किसी अन्य डिवाइस पर एसी पावर आउटलेट या यूएसबी पोर्ट।

क्या बैटरी मौजूद है?

निम्नलिखित कोड का उपयोग अनुप्रयोगों द्वारा यह पता लगाने के लिए किया जा सकता है कि डिवाइस में वर्तमान में बैटरी मौजूद है या नहीं:

```
final Intent batteryInfo = registerReceiver(null, new
IntentFilter(Intent.ACTION_BATTERY_CHANGED));

return batteryInfo.getBooleanExtra(BatteryManager.EXTRA_PRESENT, true);
```

बैटरी रहित डिवाइस व्यवहार

यदि एंड्रॉइड आपके उत्पाद के लिए बैटरी डिवाइस का पता नहीं लगाता है, तो निम्नलिखित बैटरी-संबंधी डिफ़ॉल्ट मानों का उपयोग किया जाता है। ध्यान दें कि एंड्रॉइड 9 रिलीज़ में डिफ़ॉल्ट बदल गए हैं। यह तालिका अंतर दिखाती है.

बैटरी स्थिति एंड्रॉइड 9 और उच्चतर एंड्रॉइड 8.1 और इससे पहले का संस्करण
उपस्थित असत्य सत्य
स्थिति अज्ञात चार्ज
शेष क्षमता 0 100%
स्वास्थ्य अज्ञात अच्छा
एसी चार्जर ऑनलाइन स्थिति बदला हुआ नहीं सच करने के लिए मजबूर किया

निर्माता कर्नेल पॉवर_सप्लाई ड्राइवर या हेल्थ एचएएल का उपयोग करके डिफ़ॉल्ट सेटिंग्स को बदल सकते हैं।

एंड्रॉइड 9 और उच्चतर

एंड्रॉइड 9 बैटरी रहित उपकरणों के लिए कुछ पिछले कोड को हटा देता है जो डिफ़ॉल्ट रूप से दिखावा करता था कि बैटरी मौजूद थी, 100% पर चार्ज की जा रही थी, और इसके थर्मिस्टर पर सामान्य तापमान रीडिंग के साथ अच्छे स्वास्थ्य में था।

इस जानकारी से निपटने वाले अधिकांश फ्रेमवर्क एपीआई पहले की तरह ही सामान्य स्थितियों को संभालना जारी रखते हैं: सिस्टम को चार्ज करने वाला माना जाएगा (अर्थात, बैटरी पावर पर नहीं चल रहा है), और इसे कम बैटरी वाला नहीं माना जाएगा। यदि उपयोगकर्ता इंटरफ़ेस बैटरी आइकन खींचता है, तो यह विस्मयादिबोधक बिंदु के साथ दिखाई देगा, और बैटरी प्रतिशत 0% के रूप में दिखाया जाएगा। लेकिन बैटरी कम होने के कारण डिवाइस बंद नहीं होगा, और जिन कार्यों के लिए चार्जिंग या अच्छी बैटरी की आवश्यकता होती है, उन्हें शेड्यूल किया जाएगा।

एंड्रॉइड 8.1 और इससे पहले का संस्करण

क्योंकि बैटरी की स्थिति अज्ञात है, एंड्रॉइड फ्रेमवर्क एपीआई सिस्टम को चार्ज करने वाला (या, बैटरी पावर पर नहीं चलने वाला) मानेगा और कम बैटरी वाला नहीं माना जाएगा। यदि उपयोगकर्ता इंटरफ़ेस बैटरी आइकन प्रस्तुत करता है, तो यह विस्मयादिबोधक बिंदु के साथ दिखाई देगा, और बैटरी प्रतिशत 0% के रूप में दिखाया जाएगा। लेकिन बैटरी कम होने के कारण डिवाइस बंद नहीं होगा, और जिन कार्यों के लिए चार्जिंग या अच्छी बैटरी की आवश्यकता होती है, उन्हें शेड्यूल किया जाएगा।

कार्यान्वयन

एंड्रॉइड 9 डिफ़ॉल्ट कोड आपके डिवाइस के लिए ठीक से काम कर सकता है, लेकिन जैसा कि ऊपर वर्णित है, आपके उत्पाद के लिए पावर और बैटरी स्थिति को सटीक रूप से प्रतिबिंबित करने के लिए कर्नेल या एचएएल परिवर्तन करने की अनुशंसा की जाती है। यदि एंड्रॉइड 9 और उच्चतर लिनक्स पावर सप्लाई क्लास चार्जर डिवाइस का पता नहीं लगाता है, तो डिफ़ॉल्ट रूप से सभी चार्जर प्रकार (एसी, यूएसबी, वायरलेस) की स्थिति ऑफ़लाइन होगी। यदि सभी चार्जर ऑफ़लाइन हैं, लेकिन कोई बैटरी उपकरण नहीं पाया गया है, तो सिस्टम को अभी भी इस अर्थ में चार्ज किया हुआ माना जाएगा कि यह बैटरी पावर से नहीं, बल्कि बाहरी पावर से चल रहा है, जैसा कि पहले बताया गया है।

यदि आपके उत्पाद में बैटरी नहीं है और वह हमेशा पावर स्रोत से जुड़ा रहता है, तो एसी या यूएसबी पावर स्रोत के लिए लिनक्स कर्नेल पावर_सप्लाई क्लास चार्जर ड्राइवर को लागू करना सबसे अच्छा है जो इसकी ऑनलाइन sysfs विशेषता को true पर सेट करता है। या आप अपने डिवाइस के लिए हेल्थ एचएएल में एसी चार्जर ऑनलाइन प्रॉपर्टी को कॉन्फ़िगर कर सकते हैं। ऐसा करने के लिए स्वास्थ्य एचएएल लागू करें जैसा कि कार्यान्वयन स्वास्थ्य 2.0 में वर्णित है।

यह कस्टम हेल्थ एचएएल Health::getHealthInfo() का एक कस्टम संस्करण लागू करता है जो BatteryProperties.chargerAcOnline = true के मान को संशोधित करता है।

आरंभ करने के लिए, फ़ाइल hardware/interfaces/health/2.0/default/Health.cpp अपने स्वास्थ्य HAL कार्यान्वयन में कॉपी करें और इसे हेल्थ 2.0 README के ​​अनुसार संशोधित करें।