تصف هذه الصفحة كيفية معالجة 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 والإصدارات الأقدم |
---|---|---|
مشاركة العرض | خطأ | صحيح |
الحالة | مرحلة غير محددة | جارٍ الشحن |
السعة المتبقية | 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 kernel من نوع power_supply class لمصدر طاقة USB أو AC الذي يضبط سمة على الإنترنت sysfs
على true
. أو يمكنك ضبط موقع شاحن التيار المتّصل على الإنترنت في Health HAL
لجهازك. ولإجراء ذلك، يجب تنفيذ "HAL" للصحة كما هو موضّح في تنفيذ
الإصدار 2.0 من Health.
ينفِّذ Health HAL المخصّص هذا إصدارًا مخصّصًا من Health::getHealthInfo()
الذي يعدّل قيمة BatteryProperties.chargerAcOnline = true
.
للبدء، انسخ الملف
hardware/interfaces/health/2.0/default/Health.cpp
إلى تنفيذ Health HAL وعدِّله بما يتوافق مع ملف التعليمات
البرمجية Health 2.0.