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

इस पेज पर बताया गया है कि 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 ड्राइवर या Health HAL का इस्तेमाल करके, डिफ़ॉल्ट सेटिंग में बदलाव कर सकते हैं.

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 HAL, Health::getHealthInfo() के कस्टम वर्शन को लागू करता है. इससे BatteryProperties.chargerAcOnline = true की वैल्यू में बदलाव होता है.

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