Android 9 में android.hardware.health
HAL 2.0 शामिल है,
Health@1.0 HAL से एक मेजर वर्शन अपग्रेड. इस नए एचएएल में ये सुविधाएं शामिल हैं
फ़ायदे:
- फ़्रेमवर्क और वेंडर कोड को बेहतर तरीके से अलग करना.
- ग़ैर-ज़रूरी
healthd
डीमन को हटा देता है. - स्वास्थ्य की जानकारी को मनमुताबिक बनाने की ज़्यादा से ज़्यादा आज़ादी रिपोर्ट.
- बैटरी के अलावा, डिवाइस की परफ़ॉर्मेंस से जुड़ी ज़्यादा जानकारी.
Android 11 में android.hardware.health
HAL 2.1 शामिल है.
Health@2.0 HAL से एक माइनर वर्शन अपग्रेड किया गया है. इस नए एचएएल में ये सुविधाएं शामिल हैं
फ़ायदे:
- लागू करने में आसान
- मौजूदा 2.0 एचएएल एपीआई के साथ बेहतर तरीके से अनुपालन
- ऑफ़-मोड चार्जिंग कोड में, ट्रेबल को अलग करने का बेहतर तरीका
- यह फ़्रेमवर्क, बैटरी की परफ़ॉर्मेंस के बारे में बेहतर तरीके से काम करता है डिवाइस
Android 13 में android.hardware.health
एआईडीएल एचएएल शामिल है.
Health@2.1 HAL से एक कन्वर्ज़न. इस नए एचएएल में ये सुविधाएं शामिल हैं
फ़ायदे:
- इस्तेमाल नहीं किए गए चार्जर से जुड़े एपीआई हटाएं
- इस्तेमाल नहीं किए गए
StorageAttribute
और उससे जुड़े फ़ील्ड हटाएं - डॉक चार्जिंग की सुविधा.
ज़रूरी शर्तें
Android 9 और Android 10 पर चलने वाले डिवाइस
Android 9 के साथ लॉन्च होने वाले डिवाइसों में 2.x HAL (और 1.0 HAL उपलब्ध नहीं कराना चाहिए) या AIDL HAL. डिवाइस लॉन्च नहीं हो रहे हैं अगर आपकी कंपनी Android 9 वर्शन पर काम कर रही है, लेकिन वेंडर इमेज को अपडेट करने की प्लानिंग की जा रही है, तो टारगेट फ़्रेमवर्क कम्पैटिबिलिटी मैट्रिक्स वर्शन 3 (Android 9 में रिलीज़ किया गया) के लिए लागू किए गए 1.0 एचएएल को हटाना होगा और आपको 2.x HAL या AIDL HAL की जानकारी देनी होगी.
एओएसपी में कई हेल्पर लाइब्रेरी होती हैं, जिन्हें 2.0 HAL और पुराने 1.0 HAL से ट्रांज़िशन.
Android 11 और Android 12 पर चलने वाले डिवाइस
Android 11 के साथ लॉन्च होने वाले डिवाइसों में 2.1 वर्शन होना ज़रूरी है HAL (और 1.0 या 2.0 HAL नहीं देने चाहिए) या AIDL HAL. ये डिवाइस नहीं हैं इसे Android 11 के साथ लॉन्च किया जा रहा है, लेकिन टारगेट फ़्रेमवर्क कम्पैटिबिलिटी मैट्रिक्स वर्शन 5 के लिए वेंडर इमेज (यह रिलीज़ इतने समय में रिलीज़ होगी Android 11) को मौजूदा 2.0 एचएएल को हटाना होगा लागू करना होगा और 2.1 एचएएल या एआईडीएल एचएएल देना होगा. डिवाइस लॉन्च नहीं हो रहे हैं डिवाइस, Android 11 के साथ काम कर रहा हो और वेंडर को अपडेट नहीं कर रहा हो इमेज को 2.1 एचएएल देने का सुझाव भी दिया जाता है.
एओएसपी में कई हेल्पर लाइब्रेरी होती हैं जिन्हें 2.1 को लागू करने में आपकी मदद करने के लिए डिज़ाइन किया गया है HAL और पुराने 1.0 HAL से ट्रांज़िशन.
Android 13 और उसके बाद के वर्शन वाले डिवाइस
Android 13 के साथ लॉन्च होने वाले डिवाइसों में एआईडीएल उपलब्ध कराना ज़रूरी है HAL (और HIDL HAL नहीं दिया जाना चाहिए). ऐसे डिवाइस जो Android 13 के साथ लॉन्च नहीं हो रहे हैं, लेकिन वेंडर की इमेज को Target पर अपडेट करने वाले हैं फ़्रेमवर्क कंपैटिबिलिटी मैट्रिक्स वर्शन 7 (Android 13 में रिलीज़ किया गया) को लागू किए गए HIDL HAL को हटाना होगा और एआईडीएल एचएएल उपलब्ध कराना होगा. ऐसे डिवाइस जो Android 13 के साथ लॉन्च नहीं हो रहे हैं और वेंडर इमेज को अपडेट नहीं करने वाले हैं आपको एआईडीएल एचएएल देना चाहिए.
डिवाइसों को HIDL 1.0 HAL नहीं देना चाहिए.
एओएसपी में कई हेल्पर लाइब्रेरी होती हैं, जिन्हें एआईडीएल लागू करने में आपकी मदद करने के लिए डिज़ाइन किया गया है HAL और पुराने HIDL HAL से ट्रांज़िशन.
शब्दावली
- health@1.0:
android.hardware.health@1.0
का छोटा रूप. इससे संबंधित है Android 8.0 में Health HIDL HAL वर्शन 1.0 रिलीज़ किया गया. - health@2.0:
android.hardware.health@2.0
का छोटा रूप. इससे संबंधित है Android 9 में Health HIDL HAL वर्शन 2.0 रिलीज़ किया गया. - health@2.1:
android.hardware.health@2.1
का छोटा रूप. इससे संबंधित है Android 11 में Health HIDL HAL वर्शन 2.1 रिलीज़ किया गया. - health AIDL HAL:
android.hardware.health
का छोटा रूप.- Android 13 का वर्शन 1 रिलीज़ किया गया है.
- charger: इसे ऑफ़-मोड चार्जिंग में चलाने के लिए एक्ज़ीक्यूशन किया जा सकता है जो फ़ोन चार्जिंग ऐनिमेशन.
- रिकवरी: रिकवरी मोड में एक्ज़ीक्यूटेबल चल रहा है, जिसके लिए बैटरी वापस पाना ज़रूरी है जानकारी.
- हेल्थ: Android में चलने वाला लेगसी डीमन, जो स्वास्थ्य से जुड़ी जानकारी इकट्ठा करता है और उसे फ़्रेमवर्क के लिए उपलब्ध कराता है.
- स्टोरेज: Android में चलने वाला डीमन, जो स्टोरेज की जानकारी हासिल करता है और इसे फ़्रेमवर्क के लिए उपलब्ध कराता है.
Android 8.x में स्वास्थ्य
Android 8.x में, सेहत से जुड़ा कॉम्पोनेंट इस डायग्राम में बताए गए तरीके से काम करता है:
पहली इमेज. Android 8.x में स्वास्थ्य
इस डायग्राम में:
- फ़्रेमवर्क, इन कामों के लिए एक (1) बाइंडर कॉल और एक (1) hwbinder कॉल का इस्तेमाल करता है हार्डवेयर से कनेक्ट करने में मदद मिलती है.
healthd
स्टैटिक रूप सेlibhealthd_android
,libbatterymonitor
, और इससे लिंक होता हैlibbatteryservice
.- Health@1.0-impl इसे स्टैटिक रूप से लिंक करता है
libhealthd.BOARD
.
हर बोर्ड एक अलग libhealthd.BOARD
को पसंद के मुताबिक बना सकता है;
यह बनाते समय तय किया जाता है कि कौनसा चार्जर, Health@1.0-impl, और रिकवरी लिंक कौनसा है
से.
अन्य मोड के लिए:
दूसरा डायग्राम. Android 8.x में स्वास्थ्य की जानकारी, ऑफ़-मोड चार्जिंग और रिकवरी मोड.
- चार्जर स्थैतिक रूप से
libhealthd.BOARD
से लिंक होता है,libhealthd_charger
औरlibbatterymonitor
. - खाता वापस पाने के लिए, स्टैटिक तरीके से
libhealthd.BOARD
औरlibbatterymonitor
.
Android 9 में सेहत से जुड़ा डेटा
Android 9 में, हेल्थ कॉम्पोनेंट ठीक तरह से काम करता है यहां दी गई इमेज में देखें: अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
तीसरी इमेज. Android 9 में सेहत से जुड़ा डेटा.
फ़्रेमवर्क, hwservicemanager
से Health@2.0 सेवा वापस पाने की कोशिश करता है.
अगर यह सुविधा काम नहीं करती, तो यह Health@1.0 (Android 8.x) में कॉल करता है. लेगसी कोड पाथ यह है
को सेव रखा जाता है, ताकि Android 9 सिस्टम इमेज
Android 8.x वेंडर इमेज. फ़्रेमवर्क इससे जानकारी हासिल नहीं करता
दोनों HAL में होने चाहिए, क्योंकि डिवाइस पर सेवा का सिर्फ़ एक वर्शन (1.0 या 2.0) मौजूद हो सकता है.
अन्य मोड के लिए:
चौथी इमेज. Android 9 में परफ़ॉर्मेंस की जानकारी, ऑफ़-मोड चार्जिंग और रिकवरी मोड.
Android 11 में सेहत से जुड़े अपडेट
Android 11 में, सेहत से जुड़ा कॉम्पोनेंट पूरी जानकारी के हिसाब से काम करता है यहां दी गई इमेज में देखें:
[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) ] |
+-------------------------------------+
अगर Health 2.1 लागू नहीं किया जाता है, तो सिस्टम पिछले सेक्शन में बताया गया लेगसी कोड पाथ
अन्य मोड के लिए:
[ 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 HAL इंटरफ़ेस 2.0
Health@2.0 एचएएल, फ़्रेमवर्क को पुराने वर्शन की तरह ही काम करता है सेहत वाला डीमन. यह ऐसे एपीआई भी उपलब्ध कराता है जो Health Connect से मिलते-जुलते एपीआई भी उपलब्ध कराते हैं पहले बाइंडर सेवा के रूप में दिया जाता था (यानी IबैटरीProperties रजिस्ट्रार) से संपर्क करने की सुविधा मिलती है.
मुख्य इंटरफ़ेस, आईहेल्थ , से ये फ़ंक्शन मिलते हैं:
- बदलने के लिए,
registerCallback
IBatteryPropertiesRegistrar.registerListener
- बदलने के लिए,
unregisterCallback
IBatteryPropertiesRegistrar.unregisterListener
IBatteryPropertiesRegistrar.scheduleUpdate
को बदलने के लिए,update
IBatteryPropertiesRegistrar.getProperties
को इन से बदल दिया गया है:getChargeCounter
getCurrentNow
getCurrentAverage
getCapacity
getEnergyCounter
getChargeStatus
getHealthInfo
इसके अलावा, IHealth
storaged
के लिए ये नए एपीआई उपलब्ध कराता है, ताकि
वेंडर-विशिष्ट स्टोरेज से जुड़ी जानकारी फिर से पाएं:
getStorageInfo
getDiskStats
कॉलबैक और getHealthInfo
के ज़रिए एक नया स्ट्रक्चर, @2.0::HealthInfo
दिखाया जाता है.
इस निर्देश में, Health@2.0 के ज़रिए डिवाइस की सेहत से जुड़ी पूरी जानकारी मौजूद है
एचएएल में शामिल है:
- चार्जिंग की जानकारी (एसी/यूएसबी/वायरलेस, मौजूदा, वोल्टेज वगैरह)
- बैटरी की जानकारी (मौजूदगी, बैटरी का लेवल, मौजूदा, वोल्टेज, चार्ज, टेक्नोलॉजी वगैरह)
- डिवाइस के स्टोरेज की जानकारी (डिवाइस के स्टोरेज की जानकारी, डिस्क के आंकड़े)
Health Service 2.0 को लागू करने से जुड़ी जानकारी के लिए, यहां देखें Health 2.0 को लागू करना.
HIDL HAL इंटरफ़ेस 2.1
Health@2.1 HAL में ऑफ़-मोड चार्जिंग की सुविधा काम करती है. इससे आपको ज़्यादा जानकारी मिलती है बैटरी के बारे में.
मुख्य इंटरफ़ेस, आईहेल्थ, ये अतिरिक्त फ़ंक्शन उपलब्ध कराता है
getHealthConfig
: इस एचएएल का कॉन्फ़िगरेशन वापस पाने के लिएgetHealthInfo_2_1
:getHealthInfo
में अपग्रेड किया गया माइनर वर्शनshouldKeepScreenOn
: यह तय करने के लिए कि स्क्रीन को चालू रखना है या नहीं चार्जर मोड
इसके अलावा, हर वेबसाइट और ऐप्लिकेशन पर काम करने के लिए, @2.1::IHealth
को लागू करना ज़रूरी है
अपने इनहेरिट किए गए registerCallback
के लिए @2.1::IHealthInfoCallback
और
unregisterCallback
फ़ंक्शन. नया कॉलबैक इंटरफ़ेस, हेल्थ हेल्थ दिखाता है
के बजाय healthInfoChanged_2_1
फ़ंक्शन का इस्तेमाल करके क्लाइंट को दी जाने वाली जानकारी
इनहेरिट किया गया healthInfoChanged
फ़ंक्शन.
कॉलबैक के ज़रिए एक नया स्ट्रक्चर, @2.1::HealthInfo
दिखाया जाता है और
getHealthInfo_2_1
. इस निर्देश में, डिवाइस की परफ़ॉर्मेंस से जुड़ी अन्य जानकारी मौजूद है
Health@2.0 HAL के ज़रिए उपलब्ध है. इसमें ये शामिल हैं:
- बैटरी की क्षमता का लेवल
- बैटरी के पूरी तरह चार्ज होने में लगने वाला समय (सेकंड में)
- बैटरी को पूरी तरह चार्ज करने की सुविधा (μAh में)
हेल्थ एचएएल को लागू करने में काम आने वाली क्लास के बारे में जानने के लिए, यहां दिया गया यूएमएल डायग्राम देखें:
सातवीं इमेज. हेल्थ एचएएल 2.1 यूएमएल डायग्राम.
हेल्थ सर्विस 2.1 को लागू करने से जुड़ी जानकारी के लिए, यहां देखें Health 2.1 को लागू करना.
AIDL HAL इंटरफ़ेस वर्शन 1
एपीआई से जुड़े बदलाव
AIDL वर्शन 1 HAL, HIDL 2.1 HAL से मिलते-जुलते एपीआई के साथ काम करता है. इसकी तुलना में HIDL 2.1 इंटरफ़ेस के लिए किया गया है, तो API में ये बदलाव किए गए हैं:
- HIDL HAL 2.1 में पेश किए गए चार्जर से जुड़े एपीआई, एआईडीएल में पोर्ट नहीं किए जाते
हैल. क्योंकि ऑफ़-मोड चार्जिंग की सुविधा केवल
/vendor
पार्टीशन, वेंडर इंटरफ़ेस पर एपीआई की ज़रूरत नहीं है. यहां की यात्रा पर हूं ऑफ़-मोड चार्जिंग को ठीक से लागू करें, नीचे चार्जर देखें. StorageAttribute
टाइप और उससे जुड़े फ़ील्ड हटा दिए गए हैं, क्योंकि वे इस्तेमाल नहीं किया है.- डॉक चार्जिंग की सुविधा के लिए,
chargerDockOnline
कोHealthInfo
में जोड़ दिया गया है.
लागू करना
हेल्थ एचएएल को लागू करने में काम आने वाली क्लास के बारे में जानने के लिए, यहां दिया गया यूएमएल डायग्राम देखें:
आठवीं इमेज. हेल्थ एआईडीएल एचएएल यूएमएल डायग्राम.
स्वास्थ्य एआईडीएल सेवा को लागू करने के बारे में जानकारी के लिए, यहां देखें Health AIDL HAL को लागू करना.
रिकवरी
Android 13, रिकवरी में बाइंडर की सुविधा देता है. इंस्टॉल किया जा रहा है सेहत से जुड़ी एआईडीएल सेवा से रिकवरी मोड की मदद से, ऐप्लिकेशन को रिकवरी मोड में चलाया जा सकता है.
रिकवरी के लिए स्वास्थ्य एआईडीएल सेवा इंस्टॉल करने के बारे में जानकारी के लिए, यहां देखें: फ़ॉलो किया जा रहा है:
चार्जर
ऑफ़-मोड चार्जिंग की सुविधा को /system
से /vendor
में बदल दिया गया है. इसके लिए
Android 13 के साथ लॉन्च होने वाले डिवाइसों में:
ऑफ़-मोड चार्जिंग, HAL सेवा बाइनरी को चार्जर मोड का समर्थन करना चाहिए. ऐसा करने के लिए,
रेफ़र करें
चार्जर लागू करना.
चार्जर सिस्टम की प्रॉपर्टी
ro.charger.*
प्रॉपर्टी अब charger
बाइनरी से पढ़ी नहीं जा सकती हैं
/vendor
. अगर आपके डिवाइस में, ro.charger.*
में से कोई सिस्टम प्रॉपर्टी सेट है, तो
रेफ़र करें
चार्जर के लिए सिस्टम प्रॉपर्टी.