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

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

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

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

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

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

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

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

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

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

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

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

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

एंड्रॉइड 8.1 और उससे कम

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

कार्यान्वयन

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

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

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

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