ব্যাটারি ছাড়া ডিভাইস কাজ করে

এই পৃষ্ঠায় বর্ণনা করা হয়েছে যে Android কীভাবে সেইসব প্রোডাক্ট ম্যানেজ করে যেগুলিতে হয় খুলে নেওয়া যায় এমন ব্যাটারি থাকে অথবা কোনও ইন্টার্নাল ব্যাটারি থাকে না। পরের ডিভাইসগুলি পরিবর্তে একটি বাহ্যিক পাওয়ার সোর্সের সাথে কানেক্ট করা হয়, যেমন একটি AC পাওয়ার আউটলেট বা অন্য ডিভাইসে USB পোর্ট।

ব্যাটারি কি আছে?

ডিভাইসে ব্যাটারি আছে কিনা তা শনাক্ত করার জন্য অ্যাপ্লিকেশন নিম্নলিখিত কোড ব্যবহার করতে পারে:

```
final Intent batteryInfo = registerReceiver(null, new
IntentFilter(Intent.ACTION_BATTERY_CHANGED));

return batteryInfo.getBooleanExtra(BatteryManager.EXTRA_PRESENT, true);
```

ব্যাটারি ছাড়া ডিভাইসের আচরণ

Android আপনার প্রোডাক্টের জন্য ব্যাটারি ডিভাইস শনাক্ত করতে না পারলে, ব্যাটারি সম্পর্কিত নিম্নলিখিত ডিফল্ট ভ্যালু ব্যবহার করা হয়। মনে রাখবেন, Android 9 রিলিজের সাথে ডিফল্ট সেটিংসে পরিবর্তন করা হয়েছে। এই সারণীতে পার্থক্য দেখানো হয়েছে।

ব্যাটারির অবস্থা Android 9 ও তার পরের যেকোনও ভার্সন Android 8.1 ও তার আগের যেকোনও ভার্সন
উপস্থাপন করা মিথ্যা সত্য
স্ট্যাটাস অজানা চার্জ হচ্ছে
বাকি থাকা স্টোরেজ 0 ১০০%
স্বাস্থ্য অজানা ভাল
এসি চার্জারের অনলাইন স্ট্যাটাস পরিবর্তন করা হয়নি true হিসেবে সেট করা হয়েছে

প্রস্তুতকারক কার্নেল power_supply ড্রাইভার বা Health HAL ব্যবহার করে ডিফল্ট সেটিংস পরিবর্তন করতে পারেন।

Android 9 ও তার পরবর্তী যেকোনও ভার্সন

Android 9 ব্যাটারিহীন ডিভাইসের জন্য আগের কিছু কোড সরিয়ে দেয় যা ডিফল্ট হিসেবে ব্যাটারি আছে, ১০০% চার্জ হচ্ছে এবং থার্মিস্টরে স্বাভাবিক তাপমাত্রা রিডিং সহ ভালো অবস্থায় আছে বলে দেখায়।

এই তথ্য নিয়ে কাজ করে এমন বেশিরভাগ ফ্রেমওয়ার্ক API, সাধারণ পরিস্থিতিগুলি আগের মতোই ম্যানেজ করা চালিয়ে যায়: সিস্টেমকে চার্জিং (অর্থাৎ, ব্যাটারি পাওয়ারে চলছে না) হিসেবে বিবেচনা করা হয় এবং ব্যাটারি কম আছে বলে বিবেচনা করা হয় না। ইউজার ইন্টারফেস ব্যাটারি আইকন ড্র করলে, এটি বিস্ময়সূচক চিহ্ন সহ দেখা যাবে এবং ব্যাটারির শতাংশ ০% হিসেবে দেখানো হবে। তবে, ব্যাটারিতে চার্জ কম থাকার কারণে ডিভাইস বন্ধ হয়ে যাবে না এবং চার্জিং বা ভাল ব্যাটারি প্রয়োজন এমন কাজ শিডিউল করা আছে।

Android 8.1 ও তার আগের যেকোনও ভার্সন

ব্যাটারির স্ট্যাটাস অজানা হওয়ার কারণে, Android ফ্রেমওয়ার্ক API সিস্টেমকে চার্জিং (অথবা, ব্যাটারি পাওয়ারে চলছে না) হিসেবে বিবেচনা করবে এবং ব্যাটারির চার্জ কম আছে বলে বিবেচনা করবে না। ইউজার ইন্টারফেস ব্যাটারি আইকন রেন্ডার করলে, এটি বিস্ময়সূচক চিহ্ন সহ দেখা যাবে এবং ব্যাটারির শতাংশ ০% হিসেবে দেখানো হবে। তবে, ব্যাটারিতে চার্জ কম থাকার কারণে ডিভাইস বন্ধ হয়ে যাবে না এবং যে কাজগুলির জন্য চার্জিং বা ভাল ব্যাটারি প্রয়োজন সেগুলি শিডিউল করা হয়।

প্রয়োগ

Android 9 ডিফল্ট কোড আপনার ডিভাইসের জন্য সঠিকভাবে কাজ করতে পারে, তবে আপনার প্রোডাক্টের জন্য পাওয়ার এবং ব্যাটারির অবস্থা সঠিকভাবে প্রতিফলিত করতে কার্নেল বা HAL পরিবর্তন করার জন্য সাজেস্ট করা হয়, যেমনটি আগে বর্ণনা করা হয়েছে। Android 9 ও তার পরবর্তী যেকোনও ভার্সন Linux পাওয়ার সাপ্লাই ক্লাস চার্জার ডিভাইস শনাক্ত করতে না পারলে, ডিফল্ট হিসেবে সব ধরনের চার্জারের (AC, USB, ওয়্যারলেস) স্ট্যাটাস অফলাইন হিসেবে দেখানো হবে। সব চার্জার অফলাইন থাকলেও কোনও ব্যাটারি ডিভাইস ডিটেক্ট করা না গেলে, সিস্টেমকে এখনও চার্জ হচ্ছে বলে বিবেচনা করা হবে, কারণ এটি আগে বর্ণনা করা হয়েছে সেই অনুযায়ী ব্যাটারি পাওয়ারের পরিবর্তে এক্সটার্নাল পাওয়ারে চলছে।

আপনার প্রোডাক্টে ব্যাটারি না থাকলে এবং সেটি সবসময় পাওয়ার সোর্সের সাথে কানেক্ট করা থাকলে, AC বা USB পাওয়ার সোর্সের জন্য Linux kernel power_supply class charger ড্রাইভার প্রয়োগ করা সবচেয়ে ভাল, যা সেটির অনলাইন sysfs অ্যাট্রিবিউটকে true হিসেবে সেট করে। অথবা আপনার ডিভাইসের জন্য Health HAL-এ AC চার্জার অনলাইন প্রপার্টি কনফিগার করতে পারেন। Health HAL-এ AC চার্জার অনলাইন প্রপার্টি কনফিগার করতে, Health AIDL HAL দেখুন।

এই কাস্টম Health HAL, Health::getHealthInfo()-এর একটি কাস্টম ভার্সন প্রয়োগ করে যা BatteryProperties.chargerAcOnline = true-এর ভ্যালু পরিবর্তন করে।

শুরু করতে, আপনার নিজস্ব Health HAL ইমপ্লিমেন্টেশনে hardware/interfaces/health/aidl/default/Health.cpp ফাইল কপি করুন এবং Health AIDL HAL অনুযায়ী এটি পরিবর্তন করুন।