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

এই পৃষ্ঠাটি বর্ণনা করে যে 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 এবং তার নিচের

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

বাস্তবায়ন

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

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

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

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