例行省电模式

Android 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)

如果启用了基于日常作息省电模式计划选项,并且应用使用 powerSaveHinttrue 值调用此方法,则会开启省电模式。指定 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% 时,省电模式才应自动开启。
  • 用户在省电模式计划界面中选择基于日常作息。当应用使用 true 调用 API 时,省电模式开启。此外,如果设备充电至指示的阈值水平并拔下电源,省电模式会自动关闭。
  • 用户在省电模式计划界面中选择。省电模式绝不应自动开启。
  • 如果应用开启了省电模式,并且用户手动替换省电模式再次关闭(使用“快捷设置”、“设置”等),则省电模式应保持关闭状态,直到用户手动再次开启或插入设备电源。