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