تصف هذه الصفحة كيفية تعامل 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 أو برنامج تشغيل 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
الملف التمهيدي.