Android 13 में android.hardware.health
AIDL HAL शामिल है. यह health@2.1 HAL से कन्वर्ज़न है. इस नए HAL के ये फ़ायदे हैं:
- चार्जर से जुड़े ऐसे एपीआई हटाना जिनका इस्तेमाल नहीं किया जाता
- इस्तेमाल न किए गए
StorageAttribute
और उनसे जुड़े फ़ील्ड हटाएं - डॉक चार्जिंग की सुविधा काम करती हो.
Android 11 में android.hardware.health
एचएएल 2.1 शामिल है. यह health@2.0 एचएएल का माइनर वर्शन अपग्रेड है. इस नए HAL के ये फ़ायदे हैं:
- फ़्रेमवर्क और वेंडर कोड को अलग-अलग किया गया है.
- सेहत से जुड़ी जानकारी की रिपोर्ट में, वेंडर के हिसाब से ज़्यादा बदलाव करने की सुविधा.
- बैटरी के अलावा, डिवाइस की परफ़ॉर्मेंस के बारे में ज़्यादा जानकारी.
Health 2.1 HAL को लागू करने से जुड़ा दस्तावेज़, इस पेज पर रेफ़रंस के तौर पर दिया गया है.
ज़रूरी शर्तें
इस सेक्शन में, Android 11, 12, और 13 या उसके बाद के वर्शन के लिए ज़रूरी शर्तें दी गई हैं.
Android 11 और Android 12 पर चलने वाले डिवाइस
Android 11 और 12 के साथ लॉन्च किए जा रहे डिवाइसों में, 2.1 एचएएल या AIDL एचएएल उपलब्ध होना चाहिए. Android 11 या 12 के साथ लॉन्च नहीं होने वाले डिवाइसों के लिए, वेंडर इमेज को Target Framework Compatibility Matrix के वर्शन 5 (Android 11 में रिलीज़ किया गया) या 6 (Android 12 में रिलीज़ किया गया) पर अपडेट करने की योजना है. ऐसे डिवाइसों को मौजूदा 2.0 एचएएल को हटाना होगा और 2.1 एचएएल या AIDL एचएएल उपलब्ध कराना होगा. ऐसे डिवाइस जो Android 11 के साथ लॉन्च नहीं हो रहे हैं और वेंडर इमेज को अपडेट करने का प्लान नहीं बना रहे हैं उन्हें भी 2.1 या AIDL HAL उपलब्ध कराने का सुझाव दिया जाता है.
AOSP में कई हेल्पर लाइब्रेरी शामिल हैं. इन्हें 2.1 HAL को लागू करने और पुराने HIDL HAL से ट्रांज़िशन करने में आपकी मदद करने के लिए डिज़ाइन किया गया है.
Android 13 और इसके बाद के वर्शन पर चलने वाले डिवाइस
Android 13 के साथ लॉन्च होने वाले डिवाइसों में, एआईडीएल एचएएल होना चाहिए. साथ ही, उनमें एचआईडीएल एचएएल नहीं होना चाहिए. जिन डिवाइसों को Android 13 के साथ लॉन्च नहीं किया जा रहा है, लेकिन वेंडर इमेज को Target Framework Compatibility Matrix Version 7 (Android 13 में रिलीज़ किया गया) पर अपडेट करने का प्लान है उन्हें मौजूदा एचआईडीएल एचएएल लागू करने की सुविधा को हटाना होगा और एआईडीएल एचएएल उपलब्ध कराना होगा. जिन डिवाइसों को Android 13 के साथ लॉन्च नहीं किया जा रहा है और वेंडर इमेज को अपडेट करने का प्लान नहीं है उन्हें भी एआईडीएल एचएएल उपलब्ध कराने का सुझाव दिया जाता है.
AOSP में कई हेल्पर लाइब्रेरी शामिल हैं. इन्हें इस तरह से डिज़ाइन किया गया है कि आपको एआईडीएल एचएएल को लागू करने और पुराने एचआईडीएल एचएएल से ट्रांज़िशन करने में मदद मिल सके.
शब्दावली
Android सिस्टम के स्वास्थ्य से जुड़े दस्तावेज़ के बाकी हिस्से को पढ़ने से पहले, आपको इन शब्दों के बारे में पता होना चाहिए:
- health@2.1
android.hardware.health@2.1
का संक्षिप्त नाम. हेल्थ एचआईडीएल का पहला वर्शन, Android 11 में रिलीज़ किया गया था.- सेहत से जुड़ा एआईडीएल एचएएल
android.hardware.health
का संक्षिप्त रूप. Android 13 में, हेल्थ एआईडीएल एचएएल का पहला वर्शन रिलीज़ किया गया था.- चार्जर
- बंद मोड में चार्जिंग की सुविधा चालू होने पर, फ़ोन चार्ज होने का ऐनिमेशन दिखाने वाला एक्ज़ीक्यूटेबल.
- recovery
- रिकवरी मोड में चल रही एक्ज़ीक्यूटेबल फ़ाइल, जिसे बैटरी की जानकारी वापस लानी है.
- 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) ] |
+-------------------------------------+
अलग-अलग मोड के लिए, यहां दिया गया आसान डायग्राम देखें:
पहली इमेज. हेल्थ एचआईडीएल एचएएल 2.1 इंफ़्रास्ट्रक्चर.
Android 13 में सेहत से जुड़ी सुविधाएं
Android 13 में, हेल्थ एआईडीएल एचएएल को पेश किया गया है. दूसरी इमेज में बताया गया है कि हेल्थ कॉम्पोनेंट कैसे काम करता है:
दूसरी इमेज. हेल्थ एआईडीएल एचएएल इंफ़्रास्ट्रक्चर.
HIDL एचएएल इंटरफ़ेस 2.1
health@2.1 HAL, डिवाइस बंद होने पर भी चार्जिंग की सुविधा देता है. साथ ही, बैटरी के बारे में ज़्यादा जानकारी देता है.
मुख्य इंटरफ़ेस, IHealth, ये अतिरिक्त फ़ंक्शन उपलब्ध कराता है
getHealthConfig
: इस एचएएल का कॉन्फ़िगरेशन वापस पाने के लिएgetHealthInfo_2_1
:getHealthInfo
पर माइनर वर्शन अपग्रेडshouldKeepScreenOn
: यह तय करने के लिए कि चार्जर मोड में स्क्रीन चालू रखनी है या नहीं
इसके अलावा, @2.1::IHealth
को लागू करना ज़रूरी है, ताकि यह इनहेरिट किए गए registerCallback
और unregisterCallback
फ़ंक्शन के लिए @2.1::IHealthInfoCallback
को सपोर्ट कर सके. नया कॉलबैक इंटरफ़ेस, इनहेरिट किए गए healthInfoChanged
फ़ंक्शन के बजाय अपने healthInfoChanged_2_1
फ़ंक्शन का इस्तेमाल करके, क्लाइंट को स्वास्थ्य से जुड़ी जानकारी देता है.
कॉलबैक और getHealthInfo_2_1
का इस्तेमाल करके, एक नया स्ट्रक्चर @2.1::HealthInfo
दिखाया जाता है. इस स्ट्रक्चर में, डिवाइस की सुरक्षा से जुड़ी अतिरिक्त जानकारी शामिल होती है. यह जानकारी, health@2.0 HAL के ज़रिए उपलब्ध होती है. इसमें यह जानकारी शामिल होती है:
- बैटरी की क्षमता का लेवल
- बैटरी को पूरी तरह चार्ज होने में लगने वाला समय (सेकंड में)
- बैटरी के पूरी तरह चार्ज होने की क्षमता (μAh में)
तीसरी इमेज में, हेल्थ HAL को लागू करने के लिए ज़रूरी क्लास का यूएमएल डायग्राम दिखाया गया है:
तीसरी इमेज. हेल्थ एचएएल 2.1 का यूएमएल डायग्राम.
Health service 2.1 को लागू करने के बारे में जानकारी के लिए, Health service 2.1 को लागू करना लेख पढ़ें.
एआईडीएल एचएएल इंटरफ़ेस का वर्शन 1
इस सेक्शन में, AIDL HAL इंटरफ़ेस के वर्शन 1 के बारे में जानकारी दी गई है.
एपीआई में हुए बदलाव
AIDL 1.0 HAL, HIDL 2.1 HAL की तरह ही एपीआई के साथ काम करता है. HIDL 2.1 इंटरफ़ेस की तुलना में, एपीआई में ये बदलाव किए गए हैं:
- एचआईडीएल एचएएल 2.1 में पेश किए गए, चार्जर से जुड़े एपीआई को एआईडीएल एचएएल में पोर्ट नहीं किया गया है. ऑफ़-मोड में चार्जिंग की सुविधा सिर्फ़
/vendor
पार्टीशन पर काम करती है. इसलिए, वेंडर इंटरफ़ेस पर एपीआई की ज़रूरत नहीं होती. डिवाइस बंद होने पर चार्जिंग की सुविधा को ठीक से लागू करने के लिए, चार्जर देखें. - टाइप
StorageAttribute
और इससे जुड़े फ़ील्ड हटा दिए गए हैं, क्योंकि इनका इस्तेमाल नहीं किया गया है. - डॉक चार्जिंग की सुविधा के लिए,
chargerDockOnline
कोHealthInfo
में जोड़ा गया है.
लागू करना
चौथे फ़िगर में, स्वास्थ्य से जुड़ी एआईडीएल एचएएल को लागू करने के लिए ज़रूरी क्लास का यूएमएल डायग्राम दिखाया गया है:
चौथी इमेज. हेल्थ एआईडीएल एचएएल का यूएमएल डायग्राम.
सेहत से जुड़ी एआईडीएल सेवा को लागू करने के बारे में जानकारी के लिए, सेहत से जुड़े एआईडीएल एचएएल को लागू करना लेख पढ़ें.
रिकवरी
Android 13 में, रिकवरी के दौरान बाइंडर का इस्तेमाल किया जा सकता है. रिकवरी मोड में Health AIDL सेवा इंस्टॉल करने से, इसे रिकवरी मोड में चलाने की अनुमति मिलती है.
रिकवरी के लिए, हेल्थ एआईडीएल सेवा इंस्टॉल करने के बारे में जानकारी के लिए, यहां दिया गया लेख पढ़ें:
- सेहत से जुड़ी जानकारी देने वाली एआईडीएल एचएएल सेवा के उदाहरण का इस्तेमाल करना
- बिल्ड सिस्टम में बदलाव
चार्जर
डिवाइस बंद होने पर चार्ज करने की सुविधा को /system
से /vendor
में ले जाया गया है. Android 13 के साथ लॉन्च होने वाले डिवाइसों के लिए, अगर उनमें ऑफ़-मोड चार्जिंग की सुविधा काम करती है, तो एचएएल सेवा बाइनरी में चार्जर मोड काम करना चाहिए. ऐसा करने के लिए,
चार्जर लागू करना लेख पढ़ें.
चार्जर सिस्टम की प्रॉपर्टी
/vendor
में मौजूद charger
बाइनरी अब ro.charger.*
प्रॉपर्टी को नहीं पढ़ सकती. अगर आपके डिवाइस में ro.charger.*
सिस्टम प्रॉपर्टी सेट हैं, तो चार्जर के लिए सिस्टम प्रॉपर्टी देखें.