Android स्वास्थ्य

एंड्रॉइड 9 में android.hardware.health HAL 2.0 शामिल है, जो health@1.0 HAL का एक प्रमुख संस्करण अपग्रेड है। इस नई एचएएल के निम्नलिखित फायदे हैं:

  • फ्रेमवर्क और विक्रेता कोड के बीच क्लीनर पृथक्करण।
  • अनावश्यक healthd डेमॉन की निंदा करता है।
  • स्वास्थ्य सूचना रिपोर्ट में विक्रेता अनुकूलन के लिए अधिक स्वतंत्रता।
  • केवल बैटरी से अधिक डिवाइस स्वास्थ्य संबंधी जानकारी।

एंड्रॉइड 11 में android.hardware.health HAL 2.1 शामिल है, जो healthy@2.0 HAL का एक छोटा संस्करण अपग्रेड है। इस नई एचएएल के निम्नलिखित फायदे हैं:

  • कार्यान्वयन में आसान
  • मौजूदा 2.0 एचएएल एपीआई के साथ बेहतर अनुरूपता
  • ऑफ-मोड चार्जिंग कोड में बेहतर ट्रेबल पृथक्करण
  • डिवाइस की बैटरी स्थिति को इंगित करने के लिए फ्रेमवर्क के लिए बेहतर समर्थन

एंड्रॉइड 13 में android.hardware.health AIDL HAL शामिल है, जो health@2.1 HAL का रूपांतरण है। इस नई एचएएल के निम्नलिखित फायदे हैं:

  • अप्रयुक्त चार्जर-संबंधित एपीआई हटाएं
  • अप्रयुक्त StorageAttribute और संबंधित फ़ील्ड हटाएं
  • डॉक चार्जिंग का समर्थन करें।

आवश्यकताएं

एंड्रॉइड 9 और एंड्रॉइड 10 चलाने वाले डिवाइस

एंड्रॉइड 9 के साथ लॉन्च होने वाले उपकरणों को 2.x HAL (और 1.0 HAL प्रदान नहीं करना चाहिए) या AIDL HAL प्रदान करना होगा। जो डिवाइस एंड्रॉइड 9 के साथ लॉन्च नहीं हो रहे हैं, लेकिन विक्रेता छवि को लक्ष्य फ्रेमवर्क संगतता मैट्रिक्स संस्करण 3 (एंड्रॉइड 9 में जारी) में अपडेट करने की योजना बना रहे हैं, उन्हें मौजूदा 1.0 एचएएल कार्यान्वयन को हटाना होगा और 2.x एचएएल या एआईडीएल एचएएल प्रदान करना होगा।

एओएसपी में 2.0 एचएएल को लागू करने और पुराने 1.0 एचएएल से संक्रमण में मदद करने के लिए डिज़ाइन की गई कई सहायक लाइब्रेरी शामिल हैं।

Android 11 और Android 12 चलाने वाले डिवाइस

एंड्रॉइड 11 के साथ लॉन्च होने वाले उपकरणों को 2.1 एचएएल (और 1.0 या 2.0 एचएएल प्रदान नहीं करना चाहिए) या एआईडीएल एचएएल प्रदान करना होगा। जो डिवाइस एंड्रॉइड 11 के साथ लॉन्च नहीं हो रहे हैं, लेकिन विक्रेता छवि को लक्ष्य फ्रेमवर्क संगतता मैट्रिक्स संस्करण 5 (एंड्रॉइड 11 में जारी) में अपडेट करने की योजना बना रहे हैं, उन्हें मौजूदा 2.0 एचएएल कार्यान्वयन को हटाना होगा और 2.1 एचएएल या एआईडीएल एचएएल प्रदान करना होगा। जो डिवाइस एंड्रॉइड 11 के साथ लॉन्च नहीं हो रहे हैं और विक्रेता छवि को अपडेट करने की योजना नहीं बना रहे हैं, उन्हें भी 2.1 एचएएल प्रदान करने की सिफारिश की गई है।

एओएसपी में 2.1 एचएएल को लागू करने और पुराने 1.0 एचएएल से संक्रमण में मदद करने के लिए डिज़ाइन की गई कई सहायक लाइब्रेरी शामिल हैं।

Android 13 और इसके बाद के संस्करण चलाने वाले डिवाइस

Android 13 के साथ लॉन्च होने वाले उपकरणों को AIDL HAL प्रदान करना होगा (और HIDL HAL प्रदान नहीं करना होगा)। जो डिवाइस एंड्रॉइड 13 के साथ लॉन्च नहीं हो रहे हैं, लेकिन विक्रेता छवि को लक्ष्य फ्रेमवर्क संगतता मैट्रिक्स संस्करण 7 (एंड्रॉइड 13 में जारी) में अपडेट करने की योजना बना रहे हैं, उन्हें मौजूदा एचआईडीएल एचएएल कार्यान्वयन को हटाना होगा और एआईडीएल एचएएल प्रदान करना होगा। जो डिवाइस एंड्रॉइड 13 के साथ लॉन्च नहीं हो रहे हैं और विक्रेता छवि को अपडेट करने की योजना नहीं बना रहे हैं, उन्हें एआईडीएल एचएएल प्रदान करने की भी सिफारिश की जाती है।

डिवाइस को HIDL 1.0 HAL प्रदान नहीं करना चाहिए।

एओएसपी में एआईडीएल एचएएल को लागू करने और पुराने एचआईडीएल एचएएल से संक्रमण में मदद करने के लिए डिज़ाइन की गई कई सहायक लाइब्रेरी शामिल हैं।

शब्दावली

  • health@1.0 : android.hardware.health@1.0 का संक्षिप्त रूप। एंड्रॉइड 8.0 में जारी स्वास्थ्य एचआईडीएल एचएएल संस्करण 1.0 को संदर्भित करता है।
  • health@2.0 : android.hardware.health@2.0 का संक्षिप्त रूप। एंड्रॉइड 9 में जारी स्वास्थ्य एचआईडीएल एचएएल संस्करण 2.0 को संदर्भित करता है।
  • health@2.1 : android.hardware.health@2.1 का संक्षिप्त रूप। एंड्रॉइड 11 में जारी स्वास्थ्य HIDL HAL संस्करण 2.1 को संदर्भित करता है।
  • स्वास्थ्य AIDL HAL : android.hardware.health का संक्षिप्त रूप।
    • एंड्रॉइड 13 में वर्जन 1 जारी किया गया है।
  • चार्जर : ऑफ-मोड चार्जिंग में चलने वाली निष्पादन योग्य जो फोन-चार्जिंग एनीमेशन प्रदर्शित करती है।
  • पुनर्प्राप्ति : पुनर्प्राप्ति मोड में चलने वाला निष्पादन योग्य जिसे बैटरी जानकारी पुनर्प्राप्त करनी होगी।
  • हेल्थडी : एंड्रॉइड में चलने वाला लीगेसी डेमॉन जो स्वास्थ्य संबंधी जानकारी प्राप्त करता है और इसे फ्रेमवर्क में प्रदान करता है।
  • भंडारण : एंड्रॉइड में चलने वाला डेमॉन जो भंडारण जानकारी पुनर्प्राप्त करता है और इसे फ्रेमवर्क में प्रदान करता है।

Android 8.x में स्वास्थ्य

एंड्रॉइड 8.x में, स्वास्थ्य घटक निम्नलिखित चित्र में वर्णित अनुसार काम करता है:

Android 8.x में स्वास्थ्य

आकृति 1 । Android 8.x में स्वास्थ्य

इस चित्र में:

  • हार्डवेयर के साथ संचार करने के लिए फ्रेमवर्क द्वारा एक (1) बाइंडर कॉल और एक (1) ह्वबाइंडर कॉल का उपयोग किया जाता है।
  • healthd स्थिर रूप से libhealthd_android , libbatterymonitor , और libbatteryservice से लिंक करता है।
  • हेल्थ@1.0-इम्पल सांख्यिकीय रूप से libhealthd. BOARD

प्रत्येक बोर्ड एक अलग libhealthd. BOARD ; यह निर्माण के समय निर्धारित किया जाता है कि कौन सा चार्जर, हेल्थ@1.0-इम्प्ल, और रिकवरी लिंक से जुड़ा है।

अन्य मोड के लिए:

एंड्रॉइड 8.x में ऑफ-मोड चार्जिंग और रिकवरी मोड

चित्र 2. एंड्रॉइड 8.x में स्वास्थ्य, ऑफ-मोड चार्जिंग और रिकवरी मोड

  • चार्जर स्थिर रूप से libhealthd. BOARD , libhealthd_charger और libbatterymonitor
  • पुनर्प्राप्ति स्थिर रूप से libhealthd. BOARD और libbatterymonitor

एंड्रॉइड 9 में स्वास्थ्य

एंड्रॉइड 9 में, स्वास्थ्य घटक निम्नलिखित चित्र में विस्तृत रूप से काम करता है: एंड्रॉइड 9 में स्वास्थ्य

चित्र तीन । एंड्रॉइड 9 में स्वास्थ्य

फ़्रेमवर्क hwservicemanager से health@2.0 सेवा पुनर्प्राप्त करने का प्रयास करता है। यदि यह विफल हो जाता है, तो यह health@1.0 (एंड्रॉइड 8.x में) पर कॉल करता है। लीगेसी कोड पथ को रखा गया है ताकि एंड्रॉइड 9 सिस्टम छवि एंड्रॉइड 8.x विक्रेता छवि के साथ संगत हो। फ़्रेमवर्क दोनों एचएएल से जानकारी पुनर्प्राप्त नहीं करता है क्योंकि डिवाइस पर केवल एक सेवा संस्करण (1.0 या 2.0) मौजूद हो सकता है।

अन्य मोड के लिए:

एंड्रॉइड 9 में ऑफ-मोड चार्जिंग और रिकवरी

चित्र 4. एंड्रॉइड 9 में स्वास्थ्य, ऑफ-मोड चार्जिंग और रिकवरी मोड

एंड्रॉइड 11 में स्वास्थ्य

एंड्रॉइड 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)      ] |
+-------------------------------------+

यदि स्वास्थ्य 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 बुनियादी ढांचा

चित्र 5. स्वास्थ्य एचएएल 2.1 बुनियादी ढांचा

Android 13 में स्वास्थ्य

Android 13 में, स्वास्थ्य AIDL HAL पेश किया गया है। स्वास्थ्य घटक निम्नलिखित चित्र में विस्तृत रूप से कार्य करता है:

स्वास्थ्य एआईडीएल एचएएल बुनियादी ढांचा

चित्र 6. स्वास्थ्य एआईडीएल एचएएल बुनियादी ढांचा

एचआईडीएल एचएएल इंटरफ़ेस 2.0

हेल्थ@2.0 एचएएल पुराने हेल्थड डेमॉन के समान ढांचे को समान कार्यक्षमता प्रदान करता है। यह एपीआई भी प्रदान करता है जो पहले बाइंडर सेवा (यानी IBatteryPropertiesRegistrar ) के रूप में प्रदान की गई एपीआई के समान है।

मुख्य इंटरफ़ेस, IHealth , निम्नलिखित कार्य प्रदान करता है:

  • registerCallback , IBatteryPropertiesRegistrar.registerListener को बदलने के लिए
  • IBatteryPropertiesRegistrar.unregisterListener को बदलने के लिए, unregisterCallback
  • IBatteryPropertiesRegistrar.scheduleUpdate को बदलने के लिए update
  • IBatteryPropertiesRegistrar.getProperties को निम्नलिखित द्वारा प्रतिस्थापित किया गया है:
    • getChargeCounter
    • getCurrentNow
    • getCurrentAverage
    • getCapacity
    • getEnergyCounter
    • getChargeStatus
    • getHealthInfo

इसके अलावा, IHealth विक्रेता-विशिष्ट भंडारण संबंधी जानकारी प्राप्त करने के लिए storaged के लिए निम्नलिखित नए एपीआई प्रदान करता है:

  • getStorageInfo
  • getDiskStats

एक नई संरचना, @2.0::HealthInfo , कॉलबैक और getHealthInfo के माध्यम से लौटाई जाती है। इस संरचना में हेल्थ@2.0 एचएएल के माध्यम से उपलब्ध सभी डिवाइस स्वास्थ्य जानकारी शामिल है, जिसमें शामिल हैं:

  • चार्जिंग जानकारी (एसी/यूएसबी/वायरलेस, करंट, वोल्टेज, आदि)
  • बैटरी की जानकारी (उपस्थिति, बैटरी स्तर, करंट, वोल्टेज, चार्ज, तकनीक, आदि)
  • भंडारण जानकारी (भंडारण उपकरण जानकारी, डिस्क आँकड़े)

स्वास्थ्य सेवा 2.0 को लागू करने की जानकारी के लिए, स्वास्थ्य 2.0 को लागू करना देखें।

एचआईडीएल एचएएल इंटरफ़ेस 2.1

हेल्थ@2.1 एचएएल ऑफ-मोड चार्जिंग का समर्थन करता है और बैटरी के बारे में अधिक जानकारी प्रदान करता है।

मुख्य इंटरफ़ेस, IHealth , निम्नलिखित अतिरिक्त कार्य प्रदान करता है

  • getHealthConfig : इस HAL के कॉन्फ़िगरेशन को पुनः प्राप्त करने के लिए
  • getHealthInfo_2_1 : getHealthInfo का एक लघु संस्करण अपग्रेड
  • shouldKeepScreenOn : यह निर्धारित करने के लिए कि स्क्रीन को चार्जर मोड में चालू रखा जाना चाहिए या नहीं

इसके अलावा, @2.1::IHealth के कार्यान्वयन के लिए इसके इनहेरिटेड registerCallback और unregisterCallback फ़ंक्शंस के लिए @2.1::IHealthInfoCallback समर्थन करना आवश्यक है। नया कॉलबैक इंटरफ़ेस विरासत में मिले healthInfoChanged फ़ंक्शन के बजाय अपने healthInfoChanged_2_1 फ़ंक्शन का उपयोग करके क्लाइंट को स्वास्थ्य संबंधी जानकारी लौटाता है।

एक नई संरचना, @2.1::HealthInfo , कॉलबैक और getHealthInfo_2_1 के माध्यम से लौटाई जाती है। इस संरचना में हेल्थ@2.0 एचएएल के माध्यम से उपलब्ध अतिरिक्त डिवाइस स्वास्थ्य जानकारी शामिल है, जिसमें शामिल हैं:

  • बैटरी क्षमता स्तर
  • अब बैटरी पूरी तरह चार्ज होने का समय (सेकेंड में)
  • बैटरी पूर्ण चार्ज डिजाइन क्षमता (μAh में)

स्वास्थ्य एचएएल कार्यान्वयन के लिए उपयोगी कक्षाओं के लिए निम्नलिखित यूएमएल आरेख देखें:

स्वास्थ्य 2.1 एचएएल यूएमएल आरेख

चित्र 7. स्वास्थ्य एचएएल 2.1 यूएमएल आरेख

स्वास्थ्य सेवा 2.1 को लागू करने की जानकारी के लिए, स्वास्थ्य 2.1 लागू करना देखें।

एआईडीएल एचएएल इंटरफ़ेस संस्करण 1

एपीआई परिवर्तन

AIDL संस्करण 1 HAL, HIDL 2.1 HAL के समान API का समर्थन करता है। HIDL 2.1 इंटरफ़ेस की तुलना में, API में निम्नलिखित परिवर्तन किए गए हैं:

  • एचआईडीएल एचएएल 2.1 में पेश किए गए चार्जर-संबंधित एपीआई को एआईडीएल एचएएल में पोर्ट नहीं किया गया है। क्योंकि ऑफ-मोड चार्जिंग की कार्यक्षमता केवल /vendor विभाजन पर रहती है, विक्रेता इंटरफ़ेस पर एपीआई आवश्यक नहीं हैं। ऑफ-मोड चार्जिंग को ठीक से लागू करने के लिए, नीचे चार्जर देखें।
  • StorageAttribute प्रकार और संबंधित फ़ील्ड हटा दिए गए हैं क्योंकि वे अप्रयुक्त हैं।
  • डॉक चार्जिंग को सपोर्ट करने के लिए chargerDockOnline को HealthInfo में जोड़ा गया है।

कार्यान्वयन

स्वास्थ्य एचएएल कार्यान्वयन के लिए उपयोगी कक्षाओं के लिए निम्नलिखित यूएमएल आरेख देखें:

स्वास्थ्य एआईडीएल एचएएल यूएमएल आरेख

चित्र 8. स्वास्थ्य सहायता एचएएल यूएमएल आरेख

स्वास्थ्य एआईडीएल सेवा को लागू करने की जानकारी के लिए, स्वास्थ्य एआईडीएल एचएएल को लागू करना देखें।

वसूली

एंड्रॉइड 13 रिकवरी में बाइंडर का समर्थन करता है। पुनर्प्राप्ति के लिए स्वास्थ्य एआईडीएल सेवा स्थापित करने से यह पुनर्प्राप्ति मोड में चलने की अनुमति देता है।

पुनर्प्राप्ति के लिए स्वास्थ्य एआईडीएल सेवा स्थापित करने की जानकारी के लिए, निम्नलिखित देखें:

अभियोक्ता

ऑफ-मोड चार्जिंग की कार्यक्षमता को /system से /vendor में स्थानांतरित कर दिया गया है। एंड्रॉइड 13 के साथ लॉन्च होने वाले उपकरणों के लिए, यदि वे ऑफ-मोड चार्जिंग का समर्थन करते हैं, तो एचएएल सेवा बाइनरी को चार्जर मोड का समर्थन करना होगा। ऐसा करने के लिए, चार्जर लागू करना देखें।

चार्जर सिस्टम गुण

गुण ro.charger.* अब /vendor में charger बाइनरी द्वारा पढ़ने योग्य नहीं हैं। यदि आपके डिवाइस में ro.charger.* सिस्टम गुण सेट हैं, तो चार्जर के लिए सिस्टम गुण देखें।