Android स्वास्थ्य

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

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

एंड्रॉयड 11 शामिल android.hardware.health एचएएल 2.1, health@2.0 एचएएल से एक लघु संस्करण उन्नयन। इस नए एचएएल के निम्नलिखित फायदे हैं:

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

आवश्यकताएं

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

Android 11 के साथ लॉन्च होने वाले उपकरणों को 2.1 HAL प्रदान करना चाहिए (और 1.0 या 2.0 HAL प्रदान नहीं करना चाहिए)। डिवाइस जो एंड्रॉइड 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 को संदर्भित करता है।
  • चार्जर: बंद मोड में निष्पादन योग्य चल चार्ज कि प्रदर्शित करता है फोन-चार्ज एनीमेशन।
  • वसूली: पुनर्प्राप्ति मोड में निष्पादन योग्य चल रहा है कि बैटरी में जानकारी प्राप्त करना होगा।
  • healthd: एंड्रॉयड में विरासत डेमॉन चल रहा है कि retrieves स्वास्थ्य से संबंधित जानकारी और ढांचे के लिए यह प्रदान करता है।
  • storaged: डेमॉन कि retrieves भंडारण जानकारी एंड्रॉयड में चल रहा है और यह ढांचे के लिए प्रदान करता है।

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

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

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

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

इस आरेख में:

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

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

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

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

एंड्रॉयड 8.x में चित्रा 2. स्वास्थ्य, बंद मोड चार्ज और पुनर्प्राप्ति मोड

  • चार्जर स्थिर से जोड़ता है libhealthd. BOARD , libhealthd_charger और libbatterymonitor
  • वसूली स्थिर से जोड़ता है libhealthd. BOARD और libbatterymonitor

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

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

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

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

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

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

चित्रा 4. एंड्रॉयड 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)      ] |
+-------------------------------------+

यदि स्वास्थ्य 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 ढांचे को पुराने स्वस्थ डेमॉन के समान कार्यक्षमता प्रदान करता है। यह भी एपीआई कि क्या healthd पहले एक बांधने की मशीन सेवा (यानी के रूप में प्रदान करने के लिए इसी तरह के हैं प्रदान करता है IBatteryPropertiesRegistrar )।

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

  • registerCallback , को बदलने के लिए IBatteryPropertiesRegistrar.registerListener
  • unregisterCallback , को बदलने के लिए IBatteryPropertiesRegistrar.unregisterListener
  • update , को बदलने के लिए IBatteryPropertiesRegistrar.scheduleUpdate
  • IBatteryPropertiesRegistrar.getProperties निम्नलिखित ने ले ली है:
    • getChargeCounter
    • getCurrentNow
    • getCurrentAverage
    • getCapacity
    • getEnergyCounter
    • getChargeStatus
    • getHealthInfo

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

  • getStorageInfo
  • getDiskStats

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

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

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

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

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

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

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

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

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

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