Android সিস্টেমের স্বাস্থ্য

Android 13-এ android.hardware.health AIDL HAL, health@2.1 HAL থেকে কনভার্সন অন্তর্ভুক্ত। এই নতুন HAL-এর নিম্নলিখিত সুবিধাগুলি রয়েছে:

  • চার্জার সম্পর্কিত অব্যবহৃত API সরিয়ে দেওয়া
  • অব্যবহৃত StorageAttribute এবং সংশ্লিষ্ট ফিল্ড সরান
  • ডক চার্জিংয়ের সুবিধা আছে।

Android 11-এ android.hardware.health HAL 2.1, health@2.0 HAL থেকে একটি মাইনর ভার্সন আপগ্রেড অন্তর্ভুক্ত। এই নতুন HAL-এর নিম্নলিখিত সুবিধা আছে:

  • ফ্রেমওয়ার্ক ও ভেন্ডর কোডের মধ্যে আরও পরিষ্কার বিভাজন।
  • স্বাস্থ্য সংক্রান্ত তথ্য রিপোর্টে ভেন্ডর কাস্টমাইজেশনের জন্য আরও বেশি স্বাধীনতা।
  • শুধু ব্যাটারি নয়, ডিভাইসের স্বাস্থ্য সম্পর্কিত আরও তথ্য।

Health 2.1 HAL প্রয়োগ করার জন্য ডকুমেন্টেশন এই পৃষ্ঠায় রেফারেন্স হিসেবে দেওয়া আছে।

প্রয়োজনীয়তা

এই বিভাগে Android 11, 12 ও 13 বা তার পরবর্তী যেকোনও ভার্সনের প্রয়োজনীয়তা উল্লেখ করা আছে।

Android 11 ও Android 12 ভার্সনে চলে এমন ডিভাইস

Android 11 ও 12 ভার্সন সহ লঞ্চ করা ডিভাইসগুলিতে অবশ্যই 2.1 HAL বা AIDL HAL থাকতে হবে। যেসব ডিভাইস Android 11 বা 12 ভার্সনে লঞ্চ করা হয়নি, কিন্তু টার্গেট ফ্রেমওয়ার্ক কম্প্যাটিবিলিটি ম্যাট্রিক্স ভার্সন ৫ (Android 11-এ রিলিজ করা হয়েছে) বা ৬ (Android 12-এ রিলিজ করা হয়েছে)-এ ভেন্ডর ইমেজ আপডেট করার পরিকল্পনা করা হয়েছে, সেগুলিতে আগে থেকে থাকা 2.0 HAL ইমপ্লিমেন্টেশন সরিয়ে দিতে হবে এবং 2.1 HAL বা AIDL HAL দিতে হবে। Android 11-এর সাথে লঞ্চ না করা এবং ভেন্ডর ইমেজ আপডেট করার পরিকল্পনা না করা ডিভাইসগুলিকেও 2.1 বা AIDL HAL প্রদান করার জন্য সাজেস্ট করা হয়।

AOSP-তে একাধিক হেল্পার লাইব্রেরি অন্তর্ভুক্ত থাকে যা আপনাকে 2.1 HAL প্রয়োগ করতে এবং পুরনো HIDL HAL থেকে ট্রানজিশন করতে সাহায্য করার জন্য ডিজাইন করা হয়েছে।

Android 13 ও এর পরবর্তী যেকোনও ভার্সনে চলে এমন ডিভাইস

Android 13-এর সাথে লঞ্চ হওয়া ডিভাইসে অবশ্যই AIDL HAL থাকতে হবে (এবং HIDL HAL থাকলে চলবে না)। যেসব ডিভাইস Android 13-এর সাথে লঞ্চ হচ্ছে না, কিন্তু ভেন্ডর ইমেজকে Target Framework Compatibility Matrix Version 7 (যা Android 13-এ রিলিজ করা হয়েছে)-এ আপডেট করার পরিকল্পনা করছে, সেগুলিকে আগে থেকে থাকা HIDL HAL ইমপ্লিমেন্টেশন সরিয়ে দিতে হবে এবং AIDL HAL প্রদান করতে হবে। যেসব ডিভাইস Android 13-এর সাথে লঞ্চ করা হয়নি এবং ভেন্ডর ইমেজ আপডেট করার কোনও পরিকল্পনা নেই, সেগুলিতেও AIDL HAL দেওয়ার জন্য সাজেস্ট করা হয়।

AOSP-তে একাধিক হেল্পার লাইব্রেরি অন্তর্ভুক্ত থাকে, যা আপনাকে AIDL HAL প্রয়োগ করতে এবং পুরনো HIDL HAL থেকে ট্রানজিশন করতে সাহায্য করার জন্য ডিজাইন করা হয়েছে।

পরিভাষা

Android সিস্টেম হেলথ সংক্রান্ত বাকি ডকুমেন্টেশন পড়ার আগে আপনাকে নিম্নলিখিত শব্দগুলি সম্পর্কে জানতে হবে:

health@2.1
android.hardware.health@2.1-এর সংক্ষিপ্ত রূপ। Android 11-এ health HIDL-এর ভার্সন 1 প্রকাশ করা হয়েছে।
health AIDL HAL
android.hardware.health-এর সংক্ষিপ্ত রূপ। Android 13-এ হেলথ AIDL HAL-এর ভার্সন ১ রিলিজ করা হয়েছে।
চার্জার
অফ-মোড চার্জিংয়ে এক্সিকিউটেবল চলছে যা ফোন-চার্জিং অ্যানিমেশন দেখায়।
ফেরানো
রিকভারি মোডে এক্সিকিউটেবল চলছে যা অবশ্যই ব্যাটারি সম্পর্কিত তথ্য পুনরুদ্ধার করবে।
storaged
স্টোরেজ সংক্রান্ত তথ্য পুনরুদ্ধার করে এবং ফ্রেমওয়ার্কে প্রদান করে এমন ডেমন।

Android 11 ও 12-এ Health

Android 11 ও 12-এ, স্বাস্থ্য কম্পোনেন্ট নিম্নলিখিত ডায়াগ্রামে বিস্তারিতভাবে দেখানো পদ্ধতিতে কাজ করে:

[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)      ] |
+-------------------------------------+

অন্যান্য মোডের জন্য:

[       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)      ] |
+-------------------------------------+

বিভিন্ন মোডের জন্য নিম্নলিখিত সরলীকৃত ডায়াগ্রাম দেখুন:

Health HIDL HAL 2.1 ইনফ্রাস্ট্রাকচার

ছবি ১. Health HIDL HAL 2.1 পরিকাঠামো।

Android 13-এ স্বাস্থ্য

Android 13-এ, হেল্থ AIDL HAL চালু করা হয়েছে। ছবি ২-এ দেখানো হয়েছে যে কীভাবে স্বাস্থ্য সংক্রান্ত কম্পোনেন্ট কাজ করে:

Health AIDL HAL ইনফ্রাস্ট্রাকচার

ছবি ২. Health AIDL HAL পরিকাঠামো।

HIDL HAL ইন্টারফেস 2.1

health@2.1 HAL অফ-মোড চার্জিং কাজ করে এবং ব্যাটারি সম্পর্কে আরও তথ্য প্রদান করে।

প্রধান ইন্টারফেস, IHealth, নিম্নলিখিত অতিরিক্ত ফাংশন প্রদান করে

  • getHealthConfig: এই HAL-এর কনফিগারেশন রিট্রিভ করতে
  • getHealthInfo_2_1: getHealthInfo-এ মাইনর ভার্সন আপগ্রেড
  • shouldKeepScreenOn: চার্জার মোডে স্ক্রিন চালু রাখা উচিত কিনা তা নির্ধারণ করতে

এছাড়াও, এর ইনহেরিট করা registerCallback এবং unregisterCallback ফাংশনের জন্য @2.1::IHealthInfoCallback-কে সাপোর্ট করতে @2.1::IHealth প্রয়োগ করা প্রয়োজন। নতুন কলব্যাক ইন্টারফেস, ইনহেরিট করা healthInfoChanged ফাংশনের পরিবর্তে এর healthInfoChanged_2_1 ফাংশন ব্যবহার করে ক্লায়েন্টকে স্বাস্থ্য সংক্রান্ত তথ্য রিটার্ন করে।

কলব্যাক ও getHealthInfo_2_1 ব্যবহার করে একটি নতুন স্ট্রাক্ট, @2.1::HealthInfo, রিটার্ন করা হয়। এই স্ট্রাকচারে health@2.0 HAL-এর মাধ্যমে উপলভ্য অতিরিক্ত ডিভাইস হেল্থ সংক্রান্ত তথ্য থাকে, যার মধ্যে এগুলি অন্তর্ভুক্ত:

  • ব্যাটারির ক্ষমতা লেভেল
  • ব্যাটারি সম্পূর্ণ চার্জ হতে এখন কত সময় লাগবে (সেকেন্ডে)
  • ব্যাটারির সম্পূর্ণ চার্জের ডিজাইন ক্যাপাসিটি (μAh-এ)

Figure 3-এ, হেলথ HAL ইমপ্লিমেন্টেশনের জন্য প্রয়োজনীয় ক্লাসগুলির UML ডায়াগ্রাম দেখানো হয়েছে:

Health 2.1 HAL UML ডায়াগ্রাম

ছবি ৩. Health HAL 2.1 UML ডায়াগ্রাম।

Health পরিষেবা 2.1 প্রয়োগ করার ব্যাপারে তথ্য পেতে, Health 2.1 প্রয়োগ করা দেখুন।

AIDL HAL ইন্টারফেস ভার্সন ১

এই বিভাগে AIDL HAL ইন্টারফেস ভার্সন ১ সম্পর্কিত তথ্য রয়েছে।

API-তে পরিবর্তন

AIDL ভার্সন 1 HAL, HIDL 2.1 HAL-এর মতো API-তে কাজ করে। HIDL 2.1 ইন্টারফেসের তুলনায়, API-তে নিম্নলিখিত পরিবর্তন করা হয়েছে:

  • HIDL HAL 2.1-এ চালু করা চার্জার-সম্পর্কিত API AIDL HAL-এ পোর্ট করা হয়নি। অফ-মোড চার্জিংয়ের কার্যকারিতা শুধুমাত্র /vendor পার্টিশনে থাকে, তাই ভেন্ডর ইন্টারফেসে API-এর প্রয়োজন নেই। অফ-মোড চার্জিং সঠিকভাবে ইমপ্লিমেন্ট করতে, চার্জার দেখুন।
  • StorageAttribute টাইপ করুন এবং সম্পর্কিত ফিল্ড সরিয়ে দেওয়া হয়েছে কারণ সেগুলি ব্যবহার করা হয়নি।
  • ডক চার্জিং কাজ করানোর জন্য HealthInfo-এ chargerDockOnline যোগ করা হয়েছে।

প্রয়োগ

ছবি ৪-এ হেলথ AIDL HAL ইমপ্লিমেন্টেশনের জন্য প্রয়োজনীয় ক্লাসগুলির UML ডায়াগ্রাম দেখানো হয়েছে:

Health AIDL HAL UML ডায়াগ্রাম

ছবি ৪. Health AIDL HAL UML ডায়াগ্রাম।

Health AIDL পরিষেবা প্রয়োগ করা সংক্রান্ত তথ্যের জন্য, Health AIDL HAL প্রয়োগ করা দেখুন।

রিকভারি

Android 13-এ রিকভারিতে বাইন্ডার কাজ করে। রিকভারিতে Health AIDL পরিষেবা ইনস্টল করলে, এটি রিকভারি মোডে রান করতে পারে।

রিকভারিতে হেলথ AIDL পরিষেবা ইনস্টল করা সংক্রান্ত তথ্যের জন্য, নিম্নলিখিত বিষয়গুলি দেখুন:

চার্জার

অফ-মোড চার্জিংয়ের ফাংশনালিটি /system থেকে /vendor-এ সরানো হয়েছে। Android 13-এর সাথে লঞ্চ হওয়া ডিভাইসের ক্ষেত্রে, সেগুলি অফ-মোড চার্জিং সাপোর্ট করলে, HAL পরিষেবা বাইনারিকে অবশ্যই চার্জার মোড সাপোর্ট করতে হবে। এটি করতে, চার্জার প্রয়োগ করা দেখুন।

চার্জার সিস্টেম প্রপার্টি

ro.charger.* প্রপার্টিগুলি charger বাইনারি দ্বারা আর রিড করা যায় না /vendor। আপনার ডিভাইসে ro.charger.* সিস্টেম প্রপার্টি সেট করা থাকলে, চার্জারের জন্য সিস্টেম প্রপার্টি দেখুন।