التوافق مع الأجهزة التي لا تحتوي على بطارية

توضّح هذه الصفحة كيفية تعامل 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%
الصحة غير معروف جيد
حالة شاحن التيار المتردد على الإنترنت لم يتم تعديله تم ضبط القيمة على "صحيح"

يمكن للمصنّعين تغيير الإعدادات التلقائية باستخدام برنامج تشغيل power_supply الخاص بالنواة أو Health HAL.

الإصدار 9 من نظام التشغيل Android والإصدارات الأحدث

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

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

الإصدار 8.1 من نظام التشغيل Android والإصدارات الأقدم

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

التنفيذ

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

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

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

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