Android स्वास्थ्य

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

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

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

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

आवश्यकताओं को

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

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

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

शब्दावली

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

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

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

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

चित्र 1 । Android 8.x में स्वास्थ्य

इस चित्र में:

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

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

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

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

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

  • चार्जर libhealthd. BOARD से libhealthd. BOARD लिंक libhealthd. BOARD , libhealthd_charger और libbatterymonitor
  • वसूली libhealthd. BOARD लिए libhealthd. BOARD लिंक libhealthd. BOARD और libbatterymonitor

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

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

चित्र 3 । Android 9 में स्वास्थ्य

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

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

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

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

Android 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.0

Health@2.0 HAL पुराने हेल्थकेयर डेमन के रूप में फ्रेमवर्क को समान कार्यक्षमता प्रदान करता है। यह एपीआई भी प्रदान करता है जो एक बांधने की मशीन सेवा के रूप में प्रदान किए गए स्वास्थ्य के समान हैं (यानी IBatteryPropertiesRegistrar )।

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

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

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

  • getStorageInfo
  • getDiskStats

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

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

एचएएल इंटरफ़ेस 2.1

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

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

  • getHealthConfig : इस HAL के विन्यास को पुनः प्राप्त करने के लिए
  • getHealthInfo_2_1 : करने के लिए एक लघु संस्करण उन्नयन getHealthInfo
  • shouldKeepScreenOn : यह निर्धारित करने के लिए कि स्क्रीन को चार्जर मोड में रखा जाना चाहिए या नहीं

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

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

  • बैटरी की क्षमता का स्तर
  • बैटरी चार्ज करने का समय अब ​​(सेकंड में)
  • बैटरी फुल चार्ज डिज़ाइन क्षमता (μAh में)

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