Android 9-এর মধ্যে রয়েছে android.hardware.health
HAL 2.0, health@1.0 HAL থেকে একটি বড় সংস্করণ আপগ্রেড৷ এই নতুন HAL এর নিম্নলিখিত সুবিধা রয়েছে:
- ফ্রেমওয়ার্ক এবং বিক্রেতা কোডের মধ্যে ক্লিনার বিচ্ছেদ।
- অপ্রয়োজনীয়
healthd
করে। - স্বাস্থ্য তথ্য প্রতিবেদনে বিক্রেতার কাস্টমাইজেশনের জন্য স্বাধীনতার বৃহত্তর ডিগ্রি।
- শুধু ব্যাটারির চেয়ে বেশি ডিভাইসের স্বাস্থ্যের তথ্য।
Android 11-এর মধ্যে রয়েছে android.hardware.health
HAL 2.1, health@2.0 HAL থেকে একটি ছোট সংস্করণ আপগ্রেড৷ এই নতুন HAL এর নিম্নলিখিত সুবিধা রয়েছে:
- বাস্তবায়ন করা সহজ
- বিদ্যমান 2.0 এইচএএল এপিআইগুলির সাথে আরও ভাল সামঞ্জস্য
- অফ-মোড চার্জিং কোডে আরও ভাল ট্রেবল বিচ্ছেদ
- ডিভাইসের ব্যাটারি স্বাস্থ্য নির্দেশ করতে ফ্রেমওয়ার্কের জন্য আরও ভাল সমর্থন
প্রয়োজনীয়তা
অ্যান্ড্রয়েড 9 এর সাথে চালু হওয়া ডিভাইসগুলি অবশ্যই 2.0 HAL প্রদান করবে (এবং 1.0 HAL প্রদান করবে না)। ডিভাইসগুলি Android 9 এর সাথে লঞ্চ হচ্ছে না কিন্তু বিক্রেতার ছবিকে টার্গেট ফ্রেমওয়ার্ক সামঞ্জস্যপূর্ণ ম্যাট্রিক্স সংস্করণ 3 (Android 9 এ প্রকাশিত) তে আপডেট করার পরিকল্পনা করছে সেগুলিকে অবশ্যই বিদ্যমান 1.0 HAL বাস্তবায়নগুলি সরিয়ে দিতে হবে এবং 2.0 HAL প্রদান করতে হবে৷
অ্যান্ড্রয়েড 11 এর সাথে চালু হওয়া ডিভাইসগুলিকে অবশ্যই 2.1 HAL প্রদান করতে হবে (এবং 1.0 বা 2.0 HAL প্রদান করতে হবে না)। ডিভাইসগুলি Android 11 এর সাথে চালু হচ্ছে না কিন্তু বিক্রেতার ছবিকে টার্গেট ফ্রেমওয়ার্ক সামঞ্জস্যপূর্ণ ম্যাট্রিক্স সংস্করণ 5 (এন্ড্রয়েড 11 এ প্রকাশিত) তে আপডেট করার পরিকল্পনা করছে সেগুলিকে অবশ্যই বিদ্যমান 2.0 HAL বাস্তবায়নগুলি সরিয়ে দিতে হবে এবং 2.1 HAL প্রদান করতে হবে৷ Android 11 এর সাথে লঞ্চ না হওয়া এবং বিক্রেতার ছবি আপডেট করার পরিকল্পনা না করা ডিভাইসগুলিকেও 2.1 HAL প্রদান করার পরামর্শ দেওয়া হচ্ছে।
AOSP-এ 2.1 HAL এবং পুরানো 1.0 HAL থেকে রূপান্তর বাস্তবায়নে সাহায্য করার জন্য ডিজাইন করা একাধিক সহায়ক লাইব্রেরি অন্তর্ভুক্ত রয়েছে।
পরিভাষা
- 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 8.x-এ স্বাস্থ্য
অ্যান্ড্রয়েড 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, এবং পুনরুদ্ধারের লিঙ্কটি বিল্ড টাইমে নির্ধারিত হয়।
অন্যান্য মোডের জন্য:
চিত্র 2. Android 8.x, অফ-মোড চার্জিং এবং পুনরুদ্ধার মোডে স্বাস্থ্য
- চার্জার স্ট্যাটিকভাবে
libhealthd. BOARD
,libhealthd_charger
এবংlibbatterymonitor
. - পুনরুদ্ধার স্ট্যাটিকভাবে
libhealthd. BOARD
এবংlibbatterymonitor
.
Android 9-এ স্বাস্থ্য
অ্যান্ড্রয়েড 9-এ, স্বাস্থ্য উপাদানটি নিম্নলিখিত চিত্রে বিশদভাবে কাজ করে:
চিত্র 3 । Android 9-এ স্বাস্থ্য
ফ্রেমওয়ার্ক hwservicemanager থেকে hwservicemanager
পরিষেবা পুনরুদ্ধার করার চেষ্টা করে। এটি ব্যর্থ হলে, এটি health@1.0 এ কল করে (Android 8.x এ)। লিগ্যাসি কোড পাথ রাখা হয়েছে তাই Android 9 সিস্টেমের ছবি Android 8.x বিক্রেতার ছবির সাথে সামঞ্জস্যপূর্ণ। ফ্রেমওয়ার্ক উভয় HALs থেকে তথ্য পুনরুদ্ধার করে না কারণ ডিভাইসে শুধুমাত্র একটি পরিষেবা সংস্করণ (1.0 বা 2.0) বিদ্যমান থাকতে পারে।
অন্যান্য মোডের জন্য:
চিত্র 4. Android 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) ] |
+-------------------------------------+
HAL ইন্টারফেস 2.0
health@2.0 HAL ফ্রেমওয়ার্কে পুরানো হেলথড ডেমনের মতো একই কার্যকারিতা প্রদান করে। এটি এমন APIগুলিও সরবরাহ করে যা পূর্বে বাইন্ডার পরিষেবা হিসাবে সরবরাহ করা স্বাস্থ্যের অনুরূপ (যেমন IBatteryPropertiesRegistrar )।
প্রধান ইন্টারফেস, IHealth , নিম্নলিখিত ফাংশন প্রদান করে:
-
registerCallback
,IBatteryPropertiesRegistrar.registerListener
প্রতিস্থাপন করতে -
IBatteryPropertiesRegistrar.unregisterListener
প্রতিস্থাপন করতে কলব্যাকunregisterCallback
করুন -
update
করুন,IBatteryPropertiesRegistrar.scheduleUpdate
প্রতিস্থাপন করতে -
IBatteryPropertiesRegistrar.getProperties
নিম্নলিখিত দ্বারা প্রতিস্থাপিত হয়:-
getChargeCounter
-
getCurrentNow
-
getCurrentAverage
-
getCapacity
-
getEnergyCounter
-
getChargeStatus
-
getHealthInfo
-
উপরন্তু, IHealth
বিক্রেতা-নির্দিষ্ট স্টোরেজ সম্পর্কিত তথ্য পুনরুদ্ধার করার জন্য storaged
জন্য নিম্নলিখিত নতুন API প্রদান করে:
-
getStorageInfo
-
getDiskStats
একটি নতুন কাঠামো, @2.0::HealthInfo
, কলব্যাক এবং getHealthInfo
এর মাধ্যমে ফেরত দেওয়া হয়। এই কাঠামোতে health@2.0 HAL এর মাধ্যমে উপলব্ধ সমস্ত ডিভাইস স্বাস্থ্য তথ্য রয়েছে, যার মধ্যে রয়েছে:
- চার্জিং তথ্য (AC/USB/ওয়্যারলেস, কারেন্ট, ভোল্টেজ, ইত্যাদি)
- ব্যাটারি তথ্য (উপস্থিতি, ব্যাটারি স্তর, বর্তমান, ভোল্টেজ, চার্জ, প্রযুক্তি, ইত্যাদি)
- স্টোরেজ তথ্য (স্টোরেজ ডিভাইসের তথ্য, ডিস্কের পরিসংখ্যান)
HAL ইন্টারফেস 2.1
health@2.1 HAL অফ-মোড চার্জিং সমর্থন করে এবং ব্যাটারি সম্পর্কে আরও তথ্য প্রদান করে।
প্রধান ইন্টারফেস, IHealth , নিম্নলিখিত অতিরিক্ত ফাংশন প্রদান করে
-
getHealthConfig
: এই HAL এর কনফিগারেশন পুনরুদ্ধার করতে -
getHealthInfo_2_1
:getHealthInfo
তে একটি ছোট সংস্করণ আপগ্রেড -
shouldKeepScreenOn
: চার্জার মোডে স্ক্রীন রাখা উচিত কিনা তা নির্ধারণ করতে
উপরন্তু, @2.1::IHealth-এর বাস্তবায়নের জন্য @2.1::IHealth
@2.1::IHealthInfoCallback
উত্তরাধিকারসূত্রে প্রাপ্ত registerCallback
এবং unregisterCallback
ফাংশনগুলির জন্য সমর্থন করা প্রয়োজন। নতুন কলব্যাক ইন্টারফেস উত্তরাধিকারসূত্রে প্রাপ্ত healthInfoChanged
ফাংশনের পরিবর্তে তার healthInfoChanged_2_1
ফাংশন ব্যবহার করে ক্লায়েন্টকে স্বাস্থ্য স্বাস্থ্য তথ্য প্রদান করে।
একটি নতুন কাঠামো, @2.1::HealthInfo
, কলব্যাক এবং getHealthInfo_2_1
এর মাধ্যমে ফেরত দেওয়া হয়। এই স্ট্রাকটে স্বাস্থ্য@2.0 এইচএএল-এর মাধ্যমে উপলব্ধ অতিরিক্ত ডিভাইস স্বাস্থ্য তথ্য রয়েছে, যার মধ্যে রয়েছে:
- ব্যাটারি ক্ষমতা স্তর
- ব্যাটারি চার্জ করার সময় এখন পূর্ণ হবে (সেকেন্ডে)
- ব্যাটারি ফুল চার্জ ডিজাইন ক্ষমতা (μAh এ)
স্বাস্থ্য পরিষেবা বাস্তবায়নের তথ্যের জন্য, স্বাস্থ্য বাস্তবায়ন দেখুন।