बिना बैटरी वाले डिवाइसों पर काम करता है

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

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

ऐप्लिकेशन इस कोड का इस्तेमाल करके यह पता लगा सकते हैं कि डिवाइस में बैटरी है या नहीं:

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

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

बिना बैटरी वाले डिवाइस के काम करने का तरीका

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

बैटरी की स्थिति Android 9 और उसके बाद के वर्शन के लिए Android 8.1 और उससे पहले वाले वर्शन के लिए
स्क्रीन शेयर करना गलत सही
स्टेटस कोई जानकारी नहीं बैटरी चार्ज हो रही है
बची हुई क्षमता 0 100%
सेहत कोई जानकारी नहीं अच्छा
एसी चार्जर की ऑनलाइन स्थिति बदलाव नहीं किया गया 'सही' पर सेट किया गया

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

Android 9 और उसके बाद के वर्शन के लिए

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

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

Android 8.1 और उससे पहले वाले वर्शन के लिए

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

लागू करना

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

अगर आपके प्रॉडक्ट में बैटरी नहीं है और वह हमेशा पावर से कनेक्ट रहता है स्रोत के तौर पर, Linux kernel Power_supply क्लास charger को लागू करना सबसे अच्छा होता है एसी या यूएसबी पावर सोर्स के लिए ड्राइवर, जो अपने ऑनलाइन sysfs एट्रिब्यूट को सेट करता है true तक. इसके अलावा, अपने डिवाइस के लिए Health HAL में AC चार्जर की ऑनलाइन प्रॉपर्टी को कॉन्फ़िगर किया जा सकता है. ऐसा करने के लिए, लागू करना वाले सेक्शन में बताए गए तरीके से हेल्थ एचएएल को लागू करना होगा स्वास्थ्य 2.0.

यह कस्टम हेल्थ एचएएल, Health::getHealthInfo() के कस्टम वर्शन को लागू करता है जो BatteryProperties.chargerAcOnline = true की वैल्यू को बदलता है.

शुरू करने के लिए, फ़ाइल कॉपी करें hardware/interfaces/health/2.0/default/Health.cpp और इसमें बदलाव करने के लिए, Health 2.0 पढ़ें.