يتيح نظام التشغيل 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. هذا إذن توقيع أو إذن مميّز. ويعني ذلك أنّه يجب أن يكون التطبيق في دليل priv-app
على صورة النظام، ويجب منح هذا الإذن بشكل صريح.
بالنسبة إلى التطبيقات ذات الأذونات المميزة، يجب منح الأذونات في ملف XML لإعداد النظام في الدليل /etc/permissions/ على القسم نفسه الذي يوجد فيه التطبيق. على سبيل المثال، لمنح الإذن android.permission.POWER_SAVER لتطبيق يحمل اسم الحزمة com.google.android.apps.turbo:
<!-- File located at /etc/permissions/privapp-permissions-DEVICE_NAME.xml -->
<permissions>
    <privapp-permissions package="com.google.android.apps.turbo">
        <permission name="android.permission.POWER_SAVER"/>
    </privapp-permissions>
</permissions>
إذا لم تمنح هذا الإذن للتطبيق على صورة النظام، لن يتمكّن التطبيق من الحصول على الإذن أو استدعاء واجهات برمجة التطبيقات بنجاح. لا يقدّم النظام أي ملاحظات بخلاف أخطاء الأذونات العادية، لذا من المهم التحقّق من أنّ التطبيق يمكنه طلب البيانات من واجهات برمجة التطبيقات وملاحظة تأثيراتها.
التثبيت
لكي تعمل ميزة استنادًا إلى الروتين بشكل سليم، يجب تثبيت التطبيق مسبقًا على صورة النظام مع منح الإذن المطلوب. امنح تطبيقًا واحدًا فقط إذن android.permission.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. بالإضافة إلى ذلك، يتم إيقاف ميزة "توفير شحن البطارية" تلقائيًا إذا تم شحن الجهاز إلى مستوى الحد الأدنى المحدّد وتم فصله عن مصدر الطاقة. - بلا جدول زمني: إذا اخترت بلا جدول زمني في واجهة مستخدم الجدول الزمني لميزة "توفير شحن البطارية"، لن يتم تفعيل ميزة "توفير شحن البطارية" تلقائيًا مطلقًا.
 - الإيقاف اليدوي: إذا فعّل التطبيق ميزة "توفير شحن البطارية" وأوقفتها يدويًا (باستخدام الإعدادات السريعة أو الإعدادات أو طرق أخرى)، ستظل الميزة متوقفة إلى أن تعيد تفعيلها يدويًا أو توصّل الجهاز بالشاحن.