日常節電

Android 10 引入了一個名為基於常規的節電計劃選項。此選項允許 OEM 選擇的應用程序向系統提供信號,以實現更智能的節電計劃。此選項需要配置,並且是可選的實現。

設備配置

提供者規範

要通知設置 UI 設備已正確配置,請使用您的配置覆蓋以使用您的應用程序的包名稱覆蓋值config_batterySaverScheduleProvider

例如,如果您希望應用程序包com.google.android.apps.turbo控制基於例程設置,那麼您將設置此配置值:

<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>

現在手機應該顯示基於常規選項。要進行驗證,請構建您的映像,將其刷入手機,然後導航至Settings > Battery > Battery Saver > Battery Saver Schedule 。應出現基於常規選項。

默認關閉閾值

新的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 不受支持且未指定時,該功能的行為。

觸發省電模式

蜜蜂

假設到目前為止設置成功,配置中指定的 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 負責測試他們的集成,以確保行為符合預期。特別是,驗證設備是否可以完成以下任務:

  • 用戶在省電計劃 UI 中根據百分比進行選擇,並選擇 15%。只有當電池電量達到 15% 時,節電程序才會自動啟動。
  • 用戶根據節電計劃 UI 中的例程進行選擇。當應用使用true調用 API 時,省電模式會打開。此外,如果設備充電到指示的閾值水平並拔下電源,電池保護程序會自動關閉。
  • 用戶在省電計劃 UI 中選擇。電池保護程序永遠不會自動啟動。
  • 如果應用打開省電模式並且用戶手動覆蓋省電模式以再次關閉(使用快速設置、設置等),則它應該保持關閉狀態,直到用戶再次手動將其重新打開或插入設備。