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

इस पेज पर बताया गया है कि 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 तक. इसके अलावा, हेल्थ एचएएल में एसी चार्जर की ऑनलाइन प्रॉपर्टी कॉन्फ़िगर की जा सकती है आपके डिवाइस के लिए. ऐसा करने के लिए, लागू करना वाले सेक्शन में बताए गए तरीके से हेल्थ एचएएल को लागू करना होगा स्वास्थ्य 2.0.

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

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