Android 10 گزینه زمانبندی «بهینهسازی باتری» را با نام براساس روال معرفی میکند. این گزینه به برنامهای که سازنده تجهیزات اصلی انتخاب کرده است امکان میدهد برای زمانبندی هوشمندتر «بهینهسازی باتری»، نشانهایی به سیستم ارائه دهد. این گزینه به پیکربندی نیاز دارد و پیادهسازی آن اختیاری است.
پیکربندی دستگاه
این بخش نحوه پیکربندی دستگاهتان را برای گزینه براساس روال توضیح میدهد.
مشخصات ارائهدهنده
برای اطلاع دادن به واسط کاربر تنظیمات مبنی بر اینکه دستگاه بهدرستی پیکربندی شده است، از همپوشانی پیکربندیتان برای لغو مقدار config_batterySaverScheduleProvider با نام بسته برنامهتان استفاده کنید. برای مثال، اگر میخواهید بسته برنامه com.google.android.apps.turbo تنظیم براساس روال را کنترل کند، این مقدار پیکربندی را تنظیم کنید:
<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>
برای درستیسنجی، تصویرتان را بسازید، آن را در دستگاهی بار کنید، و به تنظیمات بروید
باتری > بهینهسازی باتری > زمانبندی بهینهسازی باتری. گزینه براساس روال نشان داده میشود.
آستانه خاموش شدن پیشفرض
فیلد config_dynamicPowerSavingsDefaultDisableThreshold سطح باتریای را مشخص میکند که در آن، اگر زمانبند براساس روال «بهینهسازی باتری» را روشن کرده باشد، سیستم آن را خاموش میکند. پیشفرض سیستم ۸۰٪ است، اما میتوانید آن را تغییر دهید.
پیکربندی برنامه
این بخش نحوه پیکربندی برنامه را برای استفاده از گزینه براساس روال توضیح میدهد.
اجازهها
میاناهای برنامهسازی کاربردی لازم برای فعال کردن «بهینهسازی باتری» در برنامه با اجازه 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 را مشخص کنید تا اگر برنامه نتوانست با سیستم ارتباط برقرار کند، سیستم همچنان درصد باتریای را که در آن خاموش کردن «بهینهسازی باتری» ایمن است بداند.
این 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>
درستیسنجی
هیچ روش خودکاری برای درستیسنجی این ویژگی وجود ندارد زیرا سازنده اصلی تجهیزات تعیین میکند که چه رفتاری باعث راهاندازی حالت «بهینهسازی باتری» براساس روال میشود. سازندگان تجهیزات اصلی باید ادغام خود را آزمایش کنند تا مطمئن شوند رفتار مطابق انتظار است. بهطور دقیق، تأیید کنید که دستگاه میتواند کارهای زیر را انجام دهد:
- براساس درصد: اگر براساس درصد را در رابط کاربری زمانبندی «بهینهسازی باتری» انتخاب کنید و ۱۵٪ را انتخاب کنید، «بهینهسازی باتری» فقط وقتی شارژ باتری به ۱۵٪ برسد بهطور خودکار روشن میشود.
- براساس روال: اگر براساس روال را در واسط کاربر زمانبندی «بهینهسازی باتری» انتخاب کنید، وقتی برنامه با
trueبا میانای برنامهسازی کاربردی تماس میگیرد، «بهینهسازی باتری» روشن میشود. علاوهبراین، اگر دستگاه تا سطح آستانه نشاندادهشده شارژ شود و از پریز برق جدا شود، «بهینهسازی باتری» بهطور خودکار خاموش میشود. - هیچکدام: اگر در واسط کاربری زمانبندی «بهینهسازی باتری»، گزینه هیچکدام را انتخاب کنید، «بهینهسازی باتری» هرگز بهطور خودکار روشن نمیشود.
- لغو دستی: اگر برنامه «بهینهسازی باتری» را روشن کند و شما بهصورت دستی «بهینهسازی باتری» را لغو کنید تا آن را خاموش کنید (بااستفاده از تنظیمات فوری، تنظیمات، یا روشهای دیگر)، «بهینهسازی باتری» تا زمانی که آن را بهصورت دستی روشن کنید یا دستگاه را به برق وصل کنید خاموش میماند.