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