توفير شحن البطارية في سلسلة إجراءات

يقدّم نظام التشغيل 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>

إذا لم تمنح هذا الإذن مسبقًا لإصدار التطبيق على ملف ‎System image، لن يتمكّن التطبيق من الحصول على الإذن أو استدعاء واجهات برمجة التطبيقات بشكل صحيح. لا يقدّم النظام أي ملاحظات أخرى غير أخطاء الأذونات المعتادة، لذا تأكَّد من أنّه يمكنك طلب البيانات من واجهات برمجة التطبيقات ومراقبة تأثيرها.

التثبيت

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