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

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