تصف هذه الصفحة كيفية معالجة Android للمنتجات التي تحتوي على بطاريات قابلة للإزالة أو لا تحتوي على بطاريات داخلية. وبدلاً من ذلك، يتم توصيل الأجهزة الأخيرة بمصدر طاقة خارجي، مثل مأخذ تيار متردد أو منفذ USB على جهاز آخر.
هل هناك بطارية؟
يمكن للتطبيقات استخدام الرمز التالي لاكتشاف ما إذا كان الجهاز يحتوي على بطارية أم لا:
```
final Intent batteryInfo = registerReceiver(null, new
IntentFilter(Intent.ACTION_BATTERY_CHANGED));
return batteryInfo.getBooleanExtra(BatteryManager.EXTRA_PRESENT, true);
```
سلوك الجهاز بدون بطارية
إذا لم يرصد Android جهاز بطارية لمنتجك، سيتمّ استخدام القيم التلقائية التالية المتعلّقة بالبطارية. يُرجى العلم أنّ الإعدادات التلقائية قد تغيّرت في إصدار Android 9. يعرض هذا الجدول الاختلافات.
حالة البطارية | الإصدار 9 من نظام Android والإصدارات الأحدث | الإصدار 8.1 من نظام التشغيل Android والإصدارات الأقدم |
---|---|---|
مشاركة العرض | خطأ | true |
الحالة | مرحلة غير محددة | جارٍ الشحن |
السعة المتبقية | 0 | 100% |
البطاقة | مرحلة غير محددة | جيد |
حالة اتصال شاحن AC بالإنترنت | لم يتم تعديله | إلزامي على "صحيح" |
يمكن للشركات المصنّعة تغيير الإعدادات التلقائية باستخدام برنامج تشغيل kernel power_supply أو HAL.
الإصدار 9 من نظام Android والإصدارات الأحدث
ويزيل نظام Android 9 بعض الرموز البرمجية السابقة للأجهزة التي لا بطارياتها تلك التي تدّعي تلقائيًا أنّ البطارية كانت مضمَّنة في الجهاز وأنّه كان يتم شحنها بنسبة 100% وأنّها كانت بحالة جيدة من خلال قراءة عادية لدرجة الحرارة في الترموستات.
وتستمر معظم واجهات برمجة التطبيقات لأُطر العمل التي تتعامل مع هذه المعلومات في التعامل مع المواقف الشائعة كما هو الحال سابقًا: يُعد النظام شحنًا (أي لا يعمل باستخدام طاقة البطارية)، ولن يتم اعتبار أنّ طاقة البطارية منخفضة. إذا رسمت واجهة المستخدم رمز البطارية، فسيظهر مع علامة تعجب، وستظهر نسبة البطارية 0٪. ولكن لن يتم إيقاف تشغيل الجهاز بسبب انخفاض طاقة البطارية، وسيتم جدولة المهام التي تتطلب الشحن أو البطارية ذات أداء جيد.
الإصدار 8.1 من نظام التشغيل Android والإصدارات الأقدم
وبما أنّ حالة البطارية غير معروفة، ستعتبر واجهات برمجة التطبيقات لإطار عمل Android أنّ النظام يشحن (أو لا يعمل باستخدام طاقة البطارية)، ولن يتم اعتبار أن طاقة البطارية منخفضة في النظام. إذا كانت واجهة المستخدم تعرض رمز البطارية، سيظهر هذا الرمز مع علامة تعجب، وستظهر نسبة شحن البطارية على %0. ولكن لن يتم إيقاف تشغيل الجهاز بسبب انخفاض طاقة البطارية، ويتم جدولة المهام التي تتطلب شحنًا أو بطارية جيدة.
التنفيذ
قد يعمل الرمز التلقائي لنظام Android 9 على جهازك بشكل صحيح، ولكن يُنصح بإجراء تغيير على النواة أو تعديل طبقة تجريد الأجهزة (HAL) ليعكس بدقة حالة الطاقة والبطارية للمنتج، كما هو موضّح سابقًا. إذا لم يرصد نظام Android 9 والإصدارات الأحدث جهاز شاحن من فئة مصدر إمداد الطاقة في Linux، ستكون حالة جميع أنواع الشواحن (AC وUSB وWireless) تلقائيًا بالحالة غير متصل. إذا كانت جميع الشواحن غير متصلة بالإنترنت ولكن لم يتم رصد أي جهاز بطارية، سيظلّ النظام قيد الشحن بمفهوم أنّه يعمل باستخدام طاقة خارجية وليس بالبطارية، كما هو موضّح سابقًا.
إذا كان منتجك لا يتضمّن بطارية وكان متصلاً دائمًا بمصدر طاقة، من الأفضل استخدام شاحن kernel power_supply من فئة Linux لمصدر طاقة AC أو USB يضبط سمة على الإنترنت sysfs
على true
. أو يمكنك ضبط خاصية شاحن AC على الإنترنت في Health HAL
على جهازك. لضبط خاصية شاحن AC على الإنترنت في Health HAL،
يُرجى الرجوع إلى Health AIDL HAL.
تنفِّذ قناة Health HAL المخصّصة هذه إصدارًا مخصّصًا من Health::getHealthInfo()
يعدّل قيمة BatteryProperties.chargerAcOnline = true
.
للبدء، انسخ الملف
hardware/interfaces/health/aidl/default/Health.cpp
إلى تنفيذ Health HAL وعدِّله بما يتوافق مع
Health AIDL HAL.