توفير شحن البطارية الروتيني

في Android 10، تم تقديم خيار جدول زمني لميزة "توفير شحن البطارية" يُعرف باسم استنادًا إلى سلسلة إجراءات. يسمح هذا الخيار لتطبيق يختاره الشركة المصنّعة للمعدات الأصلية بتزويد النظام بإشارات لجدولة أكثر ذكاءً لميزة "توفير شحن البطارية". يتطلّب هذا الخيار ضبط الإعدادات، وهو اختياري التنفيذ.

إعداد الجهاز

يوضِّح هذا القسم كيفية إعداد جهازك لاستخدام خيار استنادًا إلى سلسلة إجراءات.

تحديد مقدّم الخدمة

لإعلام واجهة مستخدم الإعدادات بأنّ الجهاز تم إعداده بشكلٍ صحيح، استخدِم طبقة الإعدادات لتجاوز القيمة config_batterySaverScheduleProvider باسم حزمة تطبيقك. على سبيل المثال، إذا كنت تريد أن تتحكّم حزمة التطبيق com.google.android.apps.turbo في إعداد استنادًا إلى سلسلة إجراءات ، اضبط قيمة الإعدادات هذه:

<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>

للتحقّق من ذلك، أنشِئ إصدارك، وثبِّت ذاكرة ROM على جهاز، وانتقِل إلى الإعدادات

البطارية > توفير شحن البطارية > جدول زمني لميزة "توفير شحن البطارية". يظهر خيار استنادًا إلى سلسلة إجراءات.

الحدّ الأدنى لإيقاف الميزة تلقائيًا

يحدِّد الحقل 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. بالإضافة إلى ذلك، يتم إيقاف ميزة "توفير شحن البطارية" تلقائيًا إذا تم شحن الجهاز إلى مستوى الحدّ الأدنى المحدّد وتم فصله عن مصدر الطاقة.
  • بدون: إذا اخترت بدون في واجهة مستخدم جدول زمني لميزة "توفير شحن البطارية" ، لن يتم تفعيل ميزة "توفير شحن البطارية" تلقائيًا مطلقًا.
  • التجاوز اليدوي: إذا فعّل التطبيق ميزة "توفير شحن البطارية" وقمت بتجاوزها يدويًا لإيقافها (باستخدام الإعدادات السريعة، الإعدادات أو طرق أخرى)، ستظلّ متوقفة إلى أن تعيد تفعيلها يدويًا أو توصّل الجهاز بمصدر الطاقة.