يتضمّن نظام التشغيل Android 10 خيارًا لضبط جدول زمني لميزة "توفير شحن البطارية" يُسمى استنادًا إلى سلسلة إجراءات. يتيح هذا الخيار للتطبيق الذي يختاره المصنّع الأصلي للجهاز إرسال إشارات إلى النظام لتحديد جدول زمني أكثر ذكاءً لميزة "توفير البطارية". يتطلّب هذا الخيار ضبط الإعدادات، وهو اختياري.
إعداد الجهاز
مواصفات مقدّم الخدمة
لإعلام واجهة مستخدم الإعدادات بأنّ الجهاز تم ضبطه بشكل صحيح، استخدِم تراكب الإعدادات لتجاوز القيمة config_batterySaverScheduleProvider
باسم حزمة تطبيقك.
على سبيل المثال، إذا كنت تريد أن تتحكّم حزمة التطبيق com.google.android.apps.turbo
في الإعداد استنادًا إلى الروتين، عليك ضبط قيمة الإعداد على النحو التالي:
<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>
من المفترض أن يعرض الهاتف الآن الخيار استنادًا إلى سلسلة الإجراءات. للتحقّق من ذلك، أنشئ صورتك، ثم ثبِّتها على هاتف، وانتقِل إلى الإعدادات > البطارية > توفير شحن البطارية > جدول توفير شحن البطارية. من المفترض أن يظهر الخيار استنادًا إلى سلسلة إجراءات.
حدّ الإيقاف التلقائي
يحدّد الحقل الجديد config_dynamicPowerSavingsDefaultDisableThreshold
مستوى البطارية الذي يوقف عنده النظام وضع "توفير شحن البطارية"، إذا كان قد تم تفعيله من خلال أداة الجدولة استنادًا إلى الروتين. القيمة التلقائية للنظام هي %80، ولكن يمكنك تغييرها.
إعدادات التطبيق
الأذونات
إنّ واجهات برمجة التطبيقات اللازمة لتفعيل ميزة "توفير البطارية" من التطبيق محمية بموجب الإذن android.permission.POWER_SAVER
. هذا الإذن هو إذن توقيع/إذن مميّز، لذا عليك منح التطبيق الذي تريد أن يتمكّن من تفعيل "وضع توفير البطارية" هذا الإذن في privapp-whitelist
.
مثال على منح الإذن privapp
لأحد التطبيقات:
<privapp-permissions package="com.google.android.apps.turbo">
<permission name="android.permission.POWER_SAVER"/>
</privapp-permissions>
إذا لم تمنح هذا الإذن مسبقًا لإصدار التطبيق على صورة النظام، لن يتمكّن التطبيق من الحصول على الإذن أو استدعاء واجهات برمجة التطبيقات بشكل صحيح. لا يقدّم النظام أي ملاحظات بخلاف أخطاء الأذونات المعتادة، لذا تأكَّد من إمكانية طلب البيانات من واجهات برمجة التطبيقات وملاحظة تأثيراتها.
التثبيت
لكي تعمل ميزة استنادًا إلى الروتين بشكل سليم، يجب تثبيت التطبيق مسبقًا على صورة النظام مع منح الإذن المطلوب. امنح تطبيقًا واحدًا فقط إذن POWER_SAVER
واسمح له بالتحكّم في واجهات برمجة التطبيقات استنادًا إلى الروتين. لا يمكن تحديد سلوك الميزة عندما تحاول أكثر من جهة استخدام الإذن وواجهات برمجة التطبيقات.
تفعيل ميزة "توفير شحن البطارية"
واجهات برمجة التطبيقات
بافتراض أنّ عملية الإعداد ناجحة حتى الآن، من المفترض أن يتمكّن تطبيق المصنّع الأصلي للجهاز المحدّد في الإعداد من استدعاء الطريقة المرتبطة في PowerManager بنجاح لتفعيل "وضع توفير البطارية":
public boolean setDynamicPowerSaveHint(boolean powerSaveHint, int disableThreshold)
في حال تفعيل خيار الجدول الزمني لوضع "توفير شحن البطارية" استنادًا إلى سلسلة إجراءات، واستدعت التطبيقات هذه الطريقة مع القيمة true
للمَعلمة powerSaveHint
، سيتم تفعيل وضع "توفير شحن البطارية". حدِّد القيمة disableThreshold
لكي يعرف النظام نسبة البطارية التي يمكن عندها إيقاف وضع "توفير شحن البطارية" بأمان، وذلك في حال تعذُّر تواصل التطبيق مع النظام.
تخضع واجهة برمجة التطبيقات هذه لعمليات إلغاء من قِبل المستخدمين ولتأجيل ميزة "توفير شحن البطارية" بالطريقة نفسها التي تخضع لها ميزة "توفير شحن البطارية" التلقائية المستندة إلى النسبة المئوية. لمزيد من المعلومات، يُرجى الاطّلاع على مستندات واجهة برمجة التطبيقات.
للتأكّد من أنّ طلبات البيانات من واجهات برمجة التطبيقات تتم بنجاح، استخدِم طلب بحث عن الإعدادات العامة للتأكّد من أنّ قيمة الإعداد الأساسي قد تغيّرت وفقًا لطلبات البيانات من واجهة برمجة التطبيقات.
على سبيل المثال، إذا اختار المستخدم وضع توفير شحن البطارية الروتيني وكان التطبيق ينفّذ عملية setDynamicPowerSaveHint(true, 10)
، يجب أن تتضمّن الإعدادات العامة القيم التالية:
automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 10
dynamic_power_savings_enabled: 1
إذا طلبت setDynamicPowerSaveHint(false, 25)
بعد ذلك، يجب أن تكون القيم كما يلي:
automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 25
dynamic_power_savings_enabled: 0
يمكنك التحقّق من هذه القيم باستخدام الأمر adb
التالي:
adb shell settings get global <setting-name>
إثبات الملكية
لا تتوفّر طريقة مبرمَجة للتحقّق من هذه الميزة لأنّه لا يمكن معرفة السلوك الذي ستستخدمه الشركة المصنّعة للمعدّات الأصلية لتحديد وقت تفعيل وضع "توفير البطارية" الروتيني. وبالتالي، يتحمّل مصنّعو المعدات الأصلية مسؤولية اختبار عملية الدمج للتأكّد من أنّ السلوك يلبي التوقعات. على وجه الخصوص، تأكَّد من أنّ الجهاز يمكنه تنفيذ المهام التالية:
- يختار المستخدم استنادًا إلى النسبة المئوية في واجهة مستخدم الجدول الزمني لوضع "توفير شحن البطارية"، ثم يختار %15. يجب تفعيل ميزة "توفير شحن البطارية" تلقائيًا فقط عند وصول مستوى البطارية إلى% 15.
- يختار المستخدم استنادًا إلى الروتين في واجهة مستخدم الجدول الزمني لميزة "توفير شحن البطارية". عندما يطلب التطبيق البيانات من واجهة برمجة التطبيقات باستخدام
true
، يتم تفعيل ميزة "توفير شحن البطارية". بالإضافة إلى ذلك، يتم إيقاف وضع "توفير شحن البطارية" تلقائيًا إذا تم شحن الجهاز إلى مستوى الحدّ المحدّد وتم فصله عن مصدر الطاقة. - يختار المستخدم بلا في واجهة مستخدم الجدول الزمني لوضع "توفير شحن البطارية". يجب ألا يتم تفعيل ميزة "توفير شحن البطارية" تلقائيًا مطلقًا.
- إذا فعّل التطبيق ميزة "توفير البطارية" وألغى المستخدم تفعيلها يدويًا (باستخدام "الإعدادات السريعة" أو "الإعدادات" أو غير ذلك)، يجب أن تظل الميزة غير مفعّلة إلى أن يعيد المستخدم تفعيلها يدويًا أو يوصّل الجهاز بمصدر طاقة.