Android सिस्टम की परफ़ॉर्मेंस

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)      ] |
+-------------------------------------+

अलग-अलग मोड के लिए, यहां दिया गया आसान डायग्राम देखें:

Health HIDL HAL 2.1 इंफ़्रास्ट्रक्चर

पहली इमेज. हेल्थ एचआईडीएल एचएएल 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 को लागू करने के लिए ज़रूरी क्लास का यूएमएल डायग्राम दिखाया गया है:

Health 2.1 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.* सिस्टम प्रॉपर्टी सेट हैं, तो चार्जर के लिए सिस्टम प्रॉपर्टी देखें.