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

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

المصنعين قد يغير الإعدادات الافتراضية باستخدام نواة power_supply سائق أو الصحة HAL .

Android 9 والإصدارات الأحدث

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

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

Android 8.1 والإصدارات الأقدم

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

تطبيق

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

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

هذه العادة الصحية HAL تنفذ نسخة مخصصة من Health::getHealthInfo() أن يعدل قيمة BatteryProperties.chargerAcOnline = true .

للبدء، نسخ ملف hardware/interfaces/health/2.0/default/Health.cpp لتنفيذ الصحة HAL الخاصة بك وتعديله وفقا ل 2.0 README الصحة .