اندروید 10 یک گزینه برنامه زمان بندی صرفه جویی در باتری به نام بر اساس روتین را معرفی می کند. این گزینه به یک برنامه انتخاب شده توسط OEM اجازه می دهد تا سیگنال هایی را برای برنامه ریزی هوشمندتر صرفه جویی باتری به سیستم ارائه دهد. این گزینه نیاز به پیکربندی دارد و برای پیاده سازی اختیاری است.
پیکربندی دستگاه
مشخصات ارائه دهنده
برای اطلاع دادن به تنظیمات رابط کاربر مبنی بر اینکه دستگاه به درستی پیکربندی شده است، از پوشش پیکربندی خود استفاده کنید تا مقدار config_batterySaverScheduleProvider
را با نام بسته برنامه خود لغو کنید.
به عنوان مثال، اگر می خواهید بسته برنامه com.google.android.apps.turbo
بر اساس تنظیمات روتین کنترل کند، این مقدار پیکربندی را تنظیم کنید:
<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>
اکنون گوشی باید گزینه مبتنی بر روتین را نشان دهد. برای تأیید، تصویر خود را بسازید، آن را روی تلفن فلش کنید و به تنظیمات > باتری > صرفه جویی در باتری > زمانبندی بهینه ساز باتری بروید. گزینه مبتنی بر روتین باید ظاهر شود.
پیشفرض آستانه خاموش
فیلد جدید config_dynamicPowerSavingsDefaultDisableThreshold
سطح باتری را مشخص میکند که در آن سیستم ذخیرهکننده باتری را خاموش میکند، در صورتی که توسط زمانبندی بر اساس روتین روشن شده باشد. پیش فرض سیستم 80٪ است، اما می توانید آن را تغییر دهید.
پیکربندی برنامه
مجوزها
APIهای مورد نیاز برنامه برای روشن کردن بهینهساز باتری از برنامه با مجوز android.permission.POWER_SAVER
محافظت میشوند. این یک مجوز امضا/مجاز است، بنابراین به برنامهای که میخواهید قادر به راهاندازی ذخیرهکننده باتری این مجوز را در privapp-whitelist
خود بدهید، اعطا کنید.
نمونه ای از اعطای مجوز privapp
به یک برنامه:
<privapp-permissions package="com.google.android.apps.turbo">
<permission name="android.permission.POWER_SAVER"/>
</privapp-permissions>
اگر این مجوز را از قبل به نسخه برنامه روی تصویر سیستم اعطا نکنید، برنامه نمیتواند مجوز را دریافت کند یا به درستی با APIها تماس بگیرد. سیستم هیچ بازخوردی فراتر از خطاهای مجوز معمول ارائه نمی دهد، بنابراین بررسی کنید که می توانید API ها را فراخوانی کرده و اثرات آنها را مشاهده کنید.
نصب و راه اندازی
برای اینکه بر اساس روال به درستی کار کند، باید برنامه را با مجوز لازم روی تصویر سیستم از قبل نصب کنید. فقط به یک برنامه اجازه POWER_SAVER
بدهید و به آن اجازه دهید بر اساس APIهای معمولی کنترل کند. رفتار این ویژگی زمانی که بیش از یک برنامه سعی می کند از مجوز استفاده کند و API ها پشتیبانی نشده و مشخص نشده است.
بهینه ساز باتری را فعال کنید
API ها
با فرض اینکه راهاندازی تاکنون موفقیتآمیز بوده است، برنامه OEM مشخصشده در پیکربندی باید بتواند با موفقیت روش مرتبط را در PowerManager فراخوانی کند تا بهینهسازی باتری فعال شود:
public boolean setDynamicPowerSaveHint(boolean powerSaveHint, int disableThreshold)
اگر گزینه بر اساس برنامه زمانبندی صرفهجویی معمول باتری فعال باشد و برنامه این روش را با مقدار true
برای powerSaveHint
فراخوانی کند، پسانداز باتری روشن میشود. disableThreshold
را مشخص کنید تا اگر برنامه نتواند با سیستم ارتباط برقرار کند، سیستم همچنان بداند که در چه درصد باتری ایمن است که بهینه ساز باتری را خاموش کند.
این API به همان روشی که صرفه جویی خودکار باتری مبتنی بر درصد را به تعویق می اندازد، در معرض نادیده گرفتن کاربر و به تعویق انداختن ذخیره باتری است. برای اطلاعات بیشتر به مستندات API مراجعه کنید.
برای تأیید اینکه APIها با موفقیت فراخوانی می شوند، تنظیمات پرس و جو را به صورت سراسری انجام دهید تا تأیید شود که تنظیم پشتیبان مطابق با فراخوانی های API تغییر کرده است.
به عنوان مثال، اگر کاربر حالت معمول ذخیره باتری را انتخاب کرده و برنامه در حال فراخوانی 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>
تأیید
هیچ روش خودکاری برای تأیید این ویژگی وجود ندارد زیرا هیچ راهی برای دانستن اینکه یک OEM از چه رفتاری برای تصمیمگیری در مورد زمان راهاندازی حالت معمول صرفهجویی باتری استفاده میکند، وجود ندارد. بنابراین OEM ها مسئول آزمایش ادغام خود هستند تا مطمئن شوند که رفتار مطابق با انتظارات است. به ویژه، بررسی کنید که دستگاه می تواند وظایف زیر را انجام دهد:
- کاربر بر اساس درصد در رابط کاربری برنامه صرفه جویی باتری انتخاب می کند و 15٪ را انتخاب می کند. صرفه جویی در باتری باید به طور خودکار فقط زمانی که باتری 15٪ را فشار دهید روشن شود.
- کاربر بر اساس روال معمول در رابط کاربری برنامه صرفه جویی باتری انتخاب می کند. وقتی برنامه API را با
true
فرا میخواند، ذخیره باتری روشن میشود. علاوه بر این، اگر دستگاه تا حد آستانه مشخص شده شارژ شود و از برق جدا شود، بهینه ساز باتری به طور خودکار خاموش می شود. - کاربر هیچکدام را در رابط کاربری برنامه زمانی صرفه جویی باتری انتخاب نمی کند. صرفه جویی در باتری هرگز نباید به طور خودکار روشن شود.
- اگر برنامه بهینهساز باتری را روشن کرد و کاربر بهطور دستی ذخیرهکننده باتری را لغو کرد تا دوباره خاموش شود (با استفاده از تنظیمات سریع، تنظیمات، و غیره)، باید خاموش بماند تا زمانی که کاربر آن را دوباره بهصورت دستی روشن کند یا دستگاه را وصل کند.