ব্যাটারিবিহীন ডিভাইস সমর্থন করে

এই পৃষ্ঠাটি বর্ণনা করে যে 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 এবং উচ্চতর অ্যান্ড্রয়েড 8.1 এবং তার নিচের
বর্তমান মিথ্যা সত্য
স্ট্যাটাস অজানা চার্জিং
অবশিষ্ট ক্ষমতা 0 100%
স্বাস্থ্য অজানা ভাল
এসি চার্জার অনলাইন স্ট্যাটাস পরিবর্তিত না সত্য হতে বাধ্য

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

Android 9 এবং উচ্চতর

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

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

অ্যান্ড্রয়েড 8.1 এবং তার নিচের

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

বাস্তবায়ন

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

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

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

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