অ্যান্ড্রয়েড ১৩-এ android.hardware.health AIDL HAL অন্তর্ভুক্ত রয়েছে, যা health@2.1 HAL থেকে রূপান্তরিত। এই নতুন HAL-টির নিম্নলিখিত সুবিধাগুলো রয়েছে:
- অব্যবহৃত চার্জার-সম্পর্কিত এপিআইগুলি সরান
- অব্যবহৃত
StorageAttributeএবং সংশ্লিষ্ট ক্ষেত্রগুলি মুছে ফেলুন - ডক চার্জিং সমর্থন করে।
অ্যান্ড্রয়েড ১১-এ android.hardware.health HAL 2.1 অন্তর্ভুক্ত রয়েছে, যা health@2.0 HAL-এর একটি মাইনর ভার্সন আপগ্রেড। এই নতুন HAL-টির নিম্নলিখিত সুবিধাগুলো রয়েছে:
- ফ্রেমওয়ার্ক এবং ভেন্ডর কোডের মধ্যে আরও সুস্পষ্ট বিভাজন।
- স্বাস্থ্য তথ্য প্রতিবেদনে বিক্রেতাদের জন্য কাস্টমাইজেশনের আরও বেশি স্বাধীনতা।
- শুধু ব্যাটারি নয়, ডিভাইসের স্বাস্থ্য সম্পর্কিত আরও তথ্য।
হেলথ ২.১ এইচএএল বাস্তবায়নের জন্য প্রয়োজনীয় ডকুমেন্টেশন এই পৃষ্ঠায় রেফারেন্স হিসেবে দেওয়া আছে।
প্রয়োজনীয়তা
এই বিভাগে অ্যান্ড্রয়েড ১১, ১২ এবং ১৩ বা তার উচ্চতর সংস্করণের জন্য প্রয়োজনীয়তাগুলো রয়েছে।
অ্যান্ড্রয়েড ১১ এবং অ্যান্ড্রয়েড ১২ চালিত ডিভাইস
যেসব ডিভাইস অ্যান্ড্রয়েড ১১ এবং ১২ সহ বাজারে আসছে, সেগুলোতে অবশ্যই ২.১ এইচএএল (HAL) অথবা এআইডিএল এইচএএল (AIDL HAL) প্রদান করতে হবে। যেসব ডিভাইস অ্যান্ড্রয়েড ১১ বা ১২ সহ বাজারে আসছে না, কিন্তু ভেন্ডর ইমেজকে টার্গেট ফ্রেমওয়ার্ক কম্প্যাটিবিলিটি ম্যাট্রিক্স ভার্সন ৫ (যা অ্যান্ড্রয়েড ১১-এ প্রকাশিত) বা ৬ (যা অ্যান্ড্রয়েড ১২-এ প্রকাশিত)-এ আপডেট করার পরিকল্পনা করছে, তাদের অবশ্যই বিদ্যমান ২.০ এইচএএল ইমপ্লিমেন্টেশনগুলো সরিয়ে দিয়ে ২.১ এইচএএল অথবা এআইডিএল এইচএএল প্রদান করতে হবে। যেসব ডিভাইস অ্যান্ড্রয়েড ১১ সহ বাজারে আসছে না এবং ভেন্ডর ইমেজ আপডেট করার পরিকল্পনাও নেই, তাদের জন্যও ২.১ অথবা এআইডিএল এইচএএল প্রদান করার সুপারিশ করা হচ্ছে।
AOSP-তে একাধিক সহায়ক লাইব্রেরি অন্তর্ভুক্ত রয়েছে, যা আপনাকে 2.1 HAL বাস্তবায়ন করতে এবং পুরোনো HIDL HAL-গুলো থেকে সরে আসতে সাহায্য করার জন্য ডিজাইন করা হয়েছে।
অ্যান্ড্রয়েড ১৩ এবং তার পরবর্তী সংস্করণে চালিত ডিভাইস
যেসব ডিভাইস অ্যান্ড্রয়েড ১৩ সহ লঞ্চ হচ্ছে, সেগুলোতে অবশ্যই AIDL HAL প্রদান করতে হবে (এবং HIDL HAL প্রদান করা যাবে না)। যেসব ডিভাইস অ্যান্ড্রয়েড ১৩ সহ লঞ্চ হচ্ছে না কিন্তু ভেন্ডর ইমেজকে টার্গেট ফ্রেমওয়ার্ক কম্প্যাটিবিলিটি ম্যাট্রিক্স ভার্সন ৭ (যা অ্যান্ড্রয়েড ১৩-এ প্রকাশিত) এ আপডেট করার পরিকল্পনা করছে, সেগুলোতে অবশ্যই বিদ্যমান HIDL HAL ইমপ্লিমেন্টেশনগুলো সরিয়ে ফেলতে হবে এবং AIDL HAL প্রদান করতে হবে। যেসব ডিভাইস অ্যান্ড্রয়েড ১৩ সহ লঞ্চ হচ্ছে না এবং ভেন্ডর ইমেজ আপডেট করার পরিকল্পনাও করছে না, তাদের জন্যও AIDL HAL প্রদান করার সুপারিশ করা হচ্ছে।
AOSP-তে একাধিক সহায়ক লাইব্রেরি অন্তর্ভুক্ত রয়েছে, যা আপনাকে AIDL HAL বাস্তবায়ন করতে এবং পুরোনো HIDL HAL থেকে রূপান্তরে সাহায্য করার জন্য ডিজাইন করা হয়েছে।
পরিভাষা
অ্যান্ড্রয়েড সিস্টেম স্বাস্থ্য সম্পর্কিত বাকি ডকুমেন্টেশন পড়ার আগে নিম্নলিখিত পরিভাষাগুলো আপনার জেনে রাখা উচিত:
- স্বাস্থ্য@২.১
-
android.hardware.health@2.1এর সংক্ষিপ্ত রূপ। হেলথ HIDL-এর সংস্করণ ১ অ্যান্ড্রয়েড ১১-এ প্রকাশিত হয়েছিল। - স্বাস্থ্য AIDL HAL
-
android.hardware.healthএর সংক্ষিপ্ত রূপ। হেলথ এআইডিএল এইচএএল-এর সংস্করণ ১ অ্যান্ড্রয়েড ১৩-এ প্রকাশিত হয়েছিল। - চার্জার
- অফ-মোড চার্জিং অবস্থায় চলমান এক্সিকিউটেবল যা ফোন চার্জ হওয়ার অ্যানিমেশনটি প্রদর্শন করে।
- পুনরুদ্ধার
- রিকভারি মোডে চলমান এক্সিকিউটেবল, যাকে ব্যাটারির তথ্য সংগ্রহ করতে হবে।
- সংরক্ষিত
- ডেমন যা স্টোরেজের তথ্য সংগ্রহ করে ফ্রেমওয়ার্ককে সরবরাহ করে।
অ্যান্ড্রয়েড ১১ এবং ১২-এ স্বাস্থ্য
অ্যান্ড্রয়েড ১১ এবং ১২-এ, হেলথ কম্পোনেন্টটি নিম্নলিখিত ডায়াগ্রামে বিস্তারিতভাবে বর্ণিত উপায়ে কাজ করে:
[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) ] |
+-------------------------------------+
বিভিন্ন মোডের জন্য নিম্নলিখিত সরলীকৃত চিত্রটি দেখুন:
চিত্র ১. স্বাস্থ্য HIDL HAL 2.1 পরিকাঠামো।
অ্যান্ড্রয়েড ১৩-এ স্বাস্থ্য
অ্যান্ড্রয়েড ১৩-এ হেলথ এআইডিএল এইচএএল (AIDL HAL) চালু করা হয়েছে। চিত্র ২-এ হেলথ কম্পোনেন্টটি কীভাবে কাজ করে তা বিস্তারিতভাবে বর্ণনা করা হয়েছে:
চিত্র ২. স্বাস্থ্য এআইডিএল এইচএএল অবকাঠামো।
HIDL HAL ইন্টারফেস ২.১
health@2.1 HAL অফ-মোড চার্জিং সমর্থন করে এবং ব্যাটারি সম্পর্কে আরও তথ্য প্রদান করে।
প্রধান ইন্টারফেস, IHealth , নিম্নলিখিত অতিরিক্ত ফাংশনগুলো প্রদান করে।
-
getHealthConfig: এই HAL-এর কনফিগারেশন পুনরুদ্ধার করতে -
getHealthInfo_2_1:getHealthInfoএর একটি ছোটখাটো সংস্করণ আপগ্রেড -
shouldKeepScreenOn: চার্জার মোডে স্ক্রিন চালু রাখা হবে কিনা তা নির্ধারণ করার জন্য।
এছাড়াও, @2.1::IHealth এর বাস্তবায়নের জন্য এর উত্তরাধিকারসূত্রে প্রাপ্ত registerCallback এবং unregisterCallback ফাংশনগুলোর জন্য @2.1::IHealthInfoCallback সমর্থন করা প্রয়োজন। নতুন কলব্যাক ইন্টারফেসটি উত্তরাধিকারসূত্রে প্রাপ্ত healthInfoChanged ফাংশনের পরিবর্তে তার healthInfoChanged_2_1 ফাংশন ব্যবহার করে ক্লায়েন্টকে স্বাস্থ্য সম্পর্কিত তথ্য ফেরত দেয়।
কলব্যাক এবং getHealthInfo_2_1 ব্যবহার করে @2.1::HealthInfo একটি নতুন স্ট্রাক্ট রিটার্ন করা হয়। এই স্ট্রাক্টটিতে health@2.0 HAL-এর মাধ্যমে উপলব্ধ অতিরিক্ত ডিভাইস স্বাস্থ্য সম্পর্কিত তথ্য থাকে, যার মধ্যে অন্তর্ভুক্ত:
- ব্যাটারির ক্ষমতার স্তর
- ব্যাটারি সম্পূর্ণ চার্জ হতে এখন সময় লাগবে (সেকেন্ডে)
- ব্যাটারির সম্পূর্ণ চার্জের ডিজাইন ক্ষমতা (μAh এককে)
চিত্র ৩-এ হেলথ এইচএএল বাস্তবায়নের জন্য প্রয়োজনীয় ক্লাসগুলোর একটি ইউএমএল ডায়াগ্রাম দেখানো হয়েছে:
চিত্র ৩. হেলথ এইচএএল ২.১ ইউএমএল ডায়াগ্রাম।
স্বাস্থ্য পরিষেবা ২.১ বাস্তবায়ন সংক্রান্ত তথ্যের জন্য, স্বাস্থ্য ২.১ বাস্তবায়ন দেখুন।
AIDL HAL ইন্টারফেস সংস্করণ 1
এই বিভাগে AIDL HAL ইন্টারফেস সংস্করণ ১ সম্পর্কিত তথ্য রয়েছে।
এপিআই পরিবর্তন
AIDL সংস্করণ 1 HAL, HIDL 2.1 HAL-এর অনুরূপ API সমর্থন করে। HIDL 2.1 ইন্টারফেসের তুলনায়, এই API-তে নিম্নলিখিত পরিবর্তনগুলি করা হয়েছে:
- HIDL HAL 2.1-এ প্রবর্তিত চার্জার-সম্পর্কিত API-গুলো AIDL HAL-এ পোর্ট করা হয়নি। যেহেতু অফ-মোড চার্জিং-এর কার্যকারিতা শুধুমাত্র
/vendorপার্টিশনে থাকে, তাই ভেন্ডর ইন্টারফেসের API-গুলোর প্রয়োজন নেই। অফ-মোড চার্জিং সঠিকভাবে প্রয়োগ করতে, charger দেখুন। -
StorageAttributeটাইপ এবং সংশ্লিষ্ট ফিল্ডগুলো অব্যবহৃত থাকায় মুছে ফেলা হয়েছে। - ডক চার্জিং সমর্থন করার জন্য
HealthInfoতেchargerDockOnlineযুক্ত করা হয়েছে।
বাস্তবায়ন
চিত্র ৪-এ হেলথ এআইডিএল এইচএএল বাস্তবায়নের জন্য প্রয়োজনীয় ক্লাসগুলোর একটি ইউএমএল ডায়াগ্রাম দেখানো হয়েছে:
চিত্র ৪. হেলথ এআইডিএল এইচএএল ইউএমএল ডায়াগ্রাম।
স্বাস্থ্য AIDL পরিষেবা বাস্তবায়ন সংক্রান্ত তথ্যের জন্য, Implementing Health AIDL HAL দেখুন।
পুনরুদ্ধার
অ্যান্ড্রয়েড ১৩ রিকভারিতে বাইন্ডার সমর্থন করে। রিকভারিতে হেলথ এআইডিএল সার্ভিসটি ইনস্টল করলে তা রিকভারি মোডে চালানো যায়।
রিকভারিতে হেলথ AIDL সার্ভিস ইনস্টল করার তথ্যের জন্য, নিম্নলিখিতটি দেখুন:
চার্জার
অফ-মোড চার্জিং-এর কার্যকারিতা /system থেকে /vendor এ স্থানান্তর করা হয়েছে। Android 13 দিয়ে লঞ্চ হওয়া ডিভাইসগুলির ক্ষেত্রে, যদি সেগুলি অফ-মোড চার্জিং সমর্থন করে, তবে HAL সার্ভিস বাইনারিকে অবশ্যই চার্জার মোড সমর্থন করতে হবে। এটি করার জন্য, 'implimenting charger' অংশটি দেখুন।
চার্জার সিস্টেমের বৈশিষ্ট্য
/vendor এ থাকা charger বাইনারিটি এখন আর ro.charger.* প্রোপার্টিগুলো পড়তে পারে না। যদি আপনার ডিভাইসে ro.charger.* সিস্টেম প্রোপার্টিগুলোর কোনোটি সেট করা থাকে, তাহলে চার্জারের সিস্টেম প্রোপার্টি দেখুন।