Android स्वास्थ्य

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 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 : Android में चलने वाला लीगेसी डेमॉन जो स्वास्थ्य संबंधी जानकारी प्राप्त करता है और उसे फ्रेमवर्क प्रदान करता है।
  • स्टोरेज : एंड्रॉइड में चल रहा डेमॉन जो स्टोरेज की जानकारी को पुनः प्राप्त करता है और इसे फ्रेमवर्क प्रदान करता है।

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 से लिंक करता है libhealthd. BOARD

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

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

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

चित्र 2. Android 8.x में स्वास्थ्य, ऑफ-मोड चार्जिंग और पुनर्प्राप्ति मोड

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

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

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

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

ढांचा hwservicemanager से 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 के समान हैं (यानी IBtteryPropertiesRegistrar )।

मुख्य इंटरफ़ेस, 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 : इस एचएएल के विन्यास को पुनः प्राप्त करने के लिए
  • getHealthInfo_2_1 : getHealthInfo के लिए एक छोटा संस्करण अपग्रेड
  • shouldKeepScreenOn : यह निर्धारित करने के लिए कि क्या स्क्रीन को चार्जर मोड में रखा जाना चाहिए

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

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

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

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