دعم الأجهزة بدون بطارية

توضح هذه الصفحة كيفية تعامل Android مع المنتجات التي تحتوي على بطاريات قابلة للإزالة أو لا تحتوي على بطاريات داخلية. يتم بدلاً من ذلك توصيل الأجهزة الأخيرة بمصدر طاقة خارجي، مثل منفذ طاقة تيار متردد أو منفذ USB على جهاز آخر.

هل البطارية موجودة؟

يمكن أن تستخدم التطبيقات الكود التالي لاكتشاف ما إذا كان الجهاز يحتوي على بطارية موجودة حاليًا:

```
final Intent batteryInfo = registerReceiver(null, new
IntentFilter(Intent.ACTION_BATTERY_CHANGED));

return batteryInfo.getBooleanExtra(BatteryManager.EXTRA_PRESENT, true);
```

سلوك الجهاز بدون بطارية

إذا لم يكتشف Android جهاز بطارية لمنتجك، فسيتم استخدام القيم الافتراضية التالية المتعلقة بالبطارية. لاحظ أن الإعدادات الافتراضية قد تغيرت في إصدار Android 9. ويبين هذا الجدول الاختلافات.

حالة البطارية أندرويد 9 وما فوق أندرويد 8.1 وأقدم
حاضر خطأ شنيع حقيقي
حالة مجهول الشحن
القدرة المتبقية 0 100%
صحة مجهول جيد
حالة شاحن التيار المتردد على الإنترنت غير معدل اضطر إلى صحيح

يجوز للمصنعين تغيير الإعدادات الافتراضية باستخدام برنامج تشغيل kernel power_supply أو Health HAL .

أندرويد 9 وما فوق

يزيل Android 9 بعض التعليمات البرمجية السابقة للأجهزة التي لا تحتوي على بطاريات والتي تتظاهر افتراضيًا بوجود بطارية، ويتم شحنها بنسبة 100%، وكانت بصحة جيدة مع قراءة درجة حرارة عادية على الثرمستور الخاص بها.

تستمر معظم واجهات برمجة التطبيقات (API) الإطارية التي تتعامل مع هذه المعلومات في التعامل مع المواقف الشائعة كما كانت في السابق: سيتم اعتبار النظام قيد الشحن (أي لا يعمل على طاقة البطارية)، ولن يتم اعتباره ببطارية منخفضة. إذا قامت واجهة المستخدم برسم أيقونة البطارية، فسوف تظهر مع علامة تعجب، وستظهر نسبة البطارية على أنها 0%. لكن الجهاز لن يتوقف عن العمل بسبب انخفاض طاقة البطارية، وسيتم جدولة المهام التي تتطلب شحنًا أو بطارية جيدة.

أندرويد 8.1 وأقدم

نظرًا لأن حالة البطارية غير معروفة، ستعتبر واجهات برمجة تطبيقات إطار عمل Android أن النظام قيد الشحن (أو لا يعمل على طاقة البطارية) ولن يتم اعتبار أن البطارية منخفضة. إذا قامت واجهة المستخدم بعرض رمز البطارية، فسوف يظهر مع علامة تعجب، وسيتم عرض نسبة البطارية على أنها 0%. لكن الجهاز لن يتوقف عن العمل بسبب انخفاض طاقة البطارية، وسيتم جدولة المهام التي تتطلب شحنًا أو بطارية جيدة.

تطبيق

قد يعمل رمز Android 9 الافتراضي بشكل صحيح لجهازك، ولكن يوصى بإجراء تغيير kernel أو HAL ليعكس بدقة حالة الطاقة والبطارية لمنتجك، كما هو موضح أعلاه. إذا لم يكتشف نظام Android 9 والإصدارات الأحدث جهاز شاحن من فئة مصدر طاقة Linux ، فستكون جميع أنواع أجهزة الشحن (التيار المتردد، وUSB، واللاسلكي) في وضع عدم الاتصال افتراضيًا . إذا كانت جميع أجهزة الشحن غير متصلة بالإنترنت ولكن لم يتم اكتشاف جهاز بطارية، فسيظل النظام يعتبر قيد الشحن، بمعنى أنه يعمل بطاقة خارجية، وليس طاقة البطارية، كما هو موضح سابقًا.

إذا لم يكن منتجك يحتوي على بطارية وكان متصلاً دائمًا بمصدر طاقة، فمن الأفضل تنفيذ برنامج تشغيل شاحن فئة power_supply Linux kernel لمصدر طاقة التيار المتردد أو USB الذي يقوم بتعيين سمة sysfs عبر الإنترنت إلى true . أو يمكنك تكوين خاصية شاحن التيار المتردد عبر الإنترنت في Health HAL لجهازك. وللقيام بذلك، قم بتطبيق Health HAL كما هو موضح في Implementing Health 2.0 .

تطبق طبقة HAL الصحية المخصصة إصدارًا مخصصًا من Health::getHealthInfo() الذي يعدل قيمة BatteryProperties.chargerAcOnline = true .

للبدء، انسخ الملف hardware/interfaces/health/2.0/default/Health.cpp إلى تطبيق Health HAL الخاص بك وقم بتعديله وفقًا لـ Health 2.0 README .