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

توضّح هذه الصفحة كيفية تعامل نظام التشغيل 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 التلقائي بشكل صحيح على جهازك، ولكن يُنصح بإجراء تغيير في النواة أو طبقة تجريد الأجهزة (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.