Android 13 में android.hardware.health AIDL HAL शामिल है. यह health@2.1 HAL से कन्वर्ज़न है. इस नए HAL के ये फ़ायदे हैं:
- चार्जर से जुड़ी उन एपीआई को हटाना जिनका इस्तेमाल नहीं किया जाता
StorageAttributeऔर उससे जुड़े उन फ़ील्ड को हटाना जिनका इस्तेमाल नहीं किया जाता- डॉक चार्जिंग की सुविधा देना.
Android 11 में android.hardware.health HAL 2.1 शामिल है. यह health@2.0 HAL का मामूली वर्शन अपग्रेड है. इस नए HAL के ये फ़ायदे हैं:
- फ़्रेमवर्क और वेंडर कोड के बीच बेहतर तरीके से अलग-अलग करना.
- सेहत से जुड़ी जानकारी की रिपोर्ट में, वेंडर के हिसाब से बदलाव करने के लिए ज़्यादा विकल्प मिलना.
- बैटरी के अलावा, डिवाइस की स्थिति से जुड़ी ज़्यादा जानकारी मिलना.
रेफ़रंस के तौर पर, Health 2.1 HAL को लागू करने से जुड़ा दस्तावेज़ इस पेज पर दिया गया है.
ज़रूरी शर्तें
इस सेक्शन में, Android 11, 12, और 13 या इसके बाद के वर्शन के लिए ज़रूरी शर्तें दी गई हैं.
Android 11 और Android 12 पर चलने वाले डिवाइस
Android 11 और 12 के साथ लॉन्च होने वाले डिवाइसों में, 2.1 HAL या AIDL HAL होना ज़रूरी है. ऐसे डिवाइस जो Android 11 या 12 के साथ लॉन्च नहीं हो रहे हैं, लेकिन वेंडर इमेज को टारगेट फ़्रेमवर्क कंपैटिबिलिटी मैट्रिक्स वर्शन 5 (Android 11 में रिलीज़) या 6 (Android 12 में रिलीज़) पर अपडेट करने की योजना बना रहे हैं उनके लिए, मौजूदा 2.0 HAL को हटाना और 2.1 HAL या AIDL HAL उपलब्ध कराना ज़रूरी है. ऐसे डिवाइस जो Android 11 के साथ लॉन्च नहीं हो रहे हैं और वेंडर इमेज को अपडेट करने की योजना नहीं बना रहे हैं उनके लिए भी, 2.1 या AIDL HAL उपलब्ध कराने का सुझाव दिया जाता है.
AOSP में कई हेल्पर लाइब्रेरी शामिल हैं. इनकी मदद से, 2.1 HAL को लागू किया जा सकता है और पुराने HIDL HAL से माइग्रेट किया जा सकता है.
Android 13 और इसके बाद के वर्शन पर चलने वाले डिवाइस
Android 13 के साथ लॉन्च होने वाले डिवाइसों में, AIDL HAL होना ज़रूरी है. साथ ही, उनमें HIDL HAL नहीं होना चाहिए. ऐसे डिवाइस जो Android 13 के साथ लॉन्च नहीं हो रहे हैं, लेकिन वेंडर इमेज को टारगेट फ़्रेमवर्क कंपैटिबिलिटी मैट्रिक्स वर्शन 7 (Android 13 में रिलीज़) पर अपडेट करने की योजना बना रहे हैं उनके लिए, मौजूदा HIDL HAL को हटाना और AIDL HAL उपलब्ध कराना ज़रूरी है. ऐसे डिवाइस जो Android 13 के साथ लॉन्च नहीं हो रहे हैं और वेंडर इमेज को अपडेट करने की योजना नहीं बना रहे हैं उनके लिए भी, AIDL HAL उपलब्ध कराने का सुझाव दिया जाता है.
AOSP में कई हेल्पर लाइब्रेरी शामिल हैं. इनकी मदद से, AIDL HAL को लागू किया जा सकता है और पुराने HIDL HAL से माइग्रेट किया जा सकता है.
शब्दावली
Android सिस्टम की सेहत से जुड़े दस्तावेज़ का बाकी हिस्सा पढ़ने से पहले, आपको इन शब्दों के बारे में पता होना चाहिए:
- health@2.1
- यह
android.hardware.health@2.1का संक्षिप्त नाम है. सेहत से जुड़े HIDL का वर्शन 1, Android 11 में रिलीज़ किया गया था. - health AIDL HAL
- यह
android.hardware.healthका संक्षिप्त नाम है. सेहत से जुड़े AIDL HAL का वर्शन 1, Android 13 में रिलीज़ किया गया था. - चार्जर
- यह ऑफ़-मोड में चार्जिंग के दौरान चलने वाला एक्ज़ीक्यूटेबल है. इससे फ़ोन के चार्ज होने का ऐनिमेशन दिखता है.
- रिकवरी
- यह रिकवरी मोड में चलने वाला एक्ज़ीक्यूटेबल है. इससे बैटरी की जानकारी मिलती है.
- storaged
- यह एक डेमॉन है. इससे स्टोरेज की जानकारी मिलती है और यह जानकारी फ़्रेमवर्क को मिलती है.
Android 11 और 12 में सेहत से जुड़ी जानकारी
Android 11 और 12 में, सेहत से जुड़ा कॉम्पोनेंट इस डायग्राम में दिखाए गए तरीके से काम करता है:
[system]
| getService()
V
[health@2.1-service]
| getService(stub=true)
V
[ health@2.0-impl-2.1-<device>.so ]
| | (device-dependent linkage)
V V
+---------Helper libs for impl--------+ [libhealthd.device]
| [libhealthloop (uevent, wakealarm)] |
| [libhealth2impl (IHealth impl) ] |
| [libbatterymonitor (battery) ] |
+-------------------------------------+
अन्य मोड के लिए:
[ charger ]
| getService() | (legacy code path)
V +-------------------------------------------------+
[health@2.1-service] |
| getService(stub=true) |
V |
[ health@2.0-impl-2.1-<device>.so ] |
| | (device-dependent linkage) |
V V |
+---------Helper libs for impl--------+ [libhealthd.device] |
| [libhealthloop (uevent, wakealarm)] | |
| [libhealth2impl (IHealth impl) ] | <---------------------------------+
| [libbatterymonitor (battery) ] |
+-------------------------------------+
[recovery]
| getService() w/o hwservicemanager
V
[ health@2.0-impl-2.1-<device>.so ]
| | (device-dependent linkage)
V V
+---------Helper libs for impl--------+ [libhealthd.device]
| [libhealthloop (uevent, wakealarm)] |
| [libhealth2impl (IHealth impl) ] |
| [libbatterymonitor (battery) ] |
+-------------------------------------+
अलग-अलग मोड के लिए, यह आसान डायग्राम देखें:
पहली इमेज. सेहत से जुड़े HIDL HAL 2.1 का इन्फ़्रास्ट्रक्चर.
Android 13 में सेहत से जुड़ी जानकारी
Android 13 में, सेहत से जुड़े AIDL HAL को लॉन्च किया गया है. दूसरी इमेज में, सेहत से जुड़े कॉम्पोनेंट के काम करने के तरीके के बारे में जानकारी दी गई है:
दूसरी इमेज. सेहत से जुड़े AIDL HAL का इन्फ़्रास्ट्रक्चर.
HIDL HAL इंटरफ़ेस 2.1
health@2.1 HAL, ऑफ़-मोड में चार्जिंग की सुविधा देता है. साथ ही, इससे बैटरी के बारे में ज़्यादा जानकारी मिलती है.
मुख्य इंटरफ़ेस, IHealth, में ये अतिरिक्त फ़ंक्शन मिलते हैं
getHealthConfig: इस HAL की कॉन्फ़िगरेशन पाने के लिएgetHealthInfo_2_1: यहgetHealthInfoका मामूली वर्शन अपग्रेड हैshouldKeepScreenOn: यह तय करने के लिए कि चार्जर मोड में स्क्रीन चालू रखनी चाहिए या नहीं
इसके अलावा, इनहेरिट किए गए registerCallback और
unregisterCallback फ़ंक्शन के लिए, @2.1::IHealth को लागू करने के लिए, सपोर्ट
@2.1::IHealthInfoCallback की सुविधा देना ज़रूरी है. नया कॉलबैक इंटरफ़ेस, इनहेरिट किए गए healthInfoChanged फ़ंक्शन के बजाय, अपने healthInfoChanged_2_1 फ़ंक्शन का इस्तेमाल करके, क्लाइंट को सेहत से जुड़ी जानकारी देता है.
कॉलबैक और getHealthInfo_2_1 का इस्तेमाल करके, नया स्ट्रक्चर @2.1::HealthInfo दिखाया जाता है. इस स्ट्रक्चर में, डिवाइस की स्थिति से जुड़ी अतिरिक्त जानकारी होती है. यह जानकारी, health@2.0 एचएएल के ज़रिए मिलती है. इसमें ये जानकारी शामिल होती है:
- बैटरी की क्षमता का लेवल
- बैटरी को पूरी तरह चार्ज होने में लगने वाला समय (सेकंड में)
- बैटरी की पूरी क्षमता (μAh में)
तीसरी इमेज में, सेहत से जुड़े HAL को लागू करने के लिए काम की क्लास का यूएमएल डायग्राम दिखाया गया है:
तीसरी इमेज. सेहत से जुड़े HAL 2.1 का यूएमएल डायग्राम.
सेहत से जुड़ी सेवा 2.1 को लागू करने के बारे में जानकारी पाने के लिए, Health 2.1 को लागू करना लेख पढ़ें.
AIDL HAL इंटरफ़ेस का वर्शन 1
इस सेक्शन में, AIDL HAL इंटरफ़ेस के वर्शन 1 के बारे में जानकारी दी गई है.
एपीआई में बदलाव
AIDL वर्शन 1 HAL, HIDL 2.1 HAL की तरह ही एपीआई के साथ काम करता है. HIDL 2.1 इंटरफ़ेस की तुलना में, एपीआई में ये बदलाव किए गए हैं:
- चार्जर से जुड़ी वे एपीआई जो HIDL HAL 2.1 में लॉन्च की गई थीं उन्हें AIDL HAL में पोर्ट नहीं किया गया है. ऐसा इसलिए, क्योंकि ऑफ़-मोड में चार्जिंग की सुविधा सिर्फ़
/vendorपार्टीशन पर उपलब्ध है. इसलिए, वेंडर इंटरफ़ेस पर एपीआई की ज़रूरत नहीं है. ऑफ़-मोड में चार्जिंग की सुविधा को सही तरीके से लागू करने के लिए, चार्जर लेख पढ़ें. StorageAttributeटाइप और उससे जुड़े फ़ील्ड हटा दिए गए हैं, क्योंकि इनका इस्तेमाल नहीं किया जाता.- डॉक चार्जिंग की सुविधा देने के लिए,
HealthInfoमेंchargerDockOnlineजोड़ा गया है.
लागू करना
चौथी इमेज में, सेहत से जुड़े AIDL HAL को लागू करने के लिए काम की क्लास का यूएमएल डायग्राम दिखाया गया है:
चौथी इमेज. सेहत से जुड़े AIDL HAL का यूएमएल डायग्राम.
सेहत से जुड़ी AIDL सेवा को लागू करने के बारे में जानकारी पाने के लिए, सेहत से जुड़े AIDL HAL को लागू करना लेख पढ़ें.
रिकवरी
Android 13 में, रिकवरी के दौरान बाइंडर की सुविधा मिलती है. रिकवरी में, सेहत से जुड़ी AIDL सेवा इंस्टॉल करने पर, यह रिकवरी मोड में चल सकती है.
रिकवरी में, सेहत से जुड़ी AIDL सेवा इंस्टॉल करने के बारे में जानकारी पाने के लिए, यह लेख पढ़ें:
चार्जर
ऑफ़-मोड में चार्जिंग की सुविधा को /system से /vendor में ले जाया गया है. Android 13 के साथ लॉन्च होने वाले डिवाइसों के लिए, अगर उनमें ऑफ़-मोड में चार्जिंग की सुविधा है, तो HAL सेवा के बाइनरी में चार्जर मोड की सुविधा होनी चाहिए. ऐसा करने के लिए,
चार्जर को लागू करनालेख पढ़ें.
चार्जर की सिस्टम प्रॉपर्टी
प्रॉपर्टी ro.charger.* को अब
/vendor में मौजूद charger बाइनरी से नहीं पढ़ा जा सकता. अगर आपके डिवाइस में कोई भी ro.charger.* सिस्टम प्रॉपर्टी सेट है, तो चार्जर के लिए सिस्टम प्रॉपर्टी लेख पढ़ें.