日常節電

Android 10 引進了名為「基於例程」的省電計畫選項。此選項允許 OEM 選擇的應用程式向系統提供訊號,以實現更智慧的節電計劃。此選項需要配置,並且可以選擇是否實施。

設備配置

提供者規範

若要通知設定 UI 裝置已正確配置,請使用配置覆蓋層以應用程式的套件名稱覆寫值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 時,該功能的行為不受支援且未指定。

觸發省電模式

蜜蜂

假設到目前為止設定成功,配置中指定的 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 中選擇「無」 。省電模式永遠不會自動啟動。
  • 如果應用程式開啟省電模式並且使用者手動覆蓋省電模式再次關閉(使用「快速設定」、「設定」等),則它應該保持關閉狀態,直到使用者再次手動重新開啟它或插入裝置。