日常安排省電模式

Android 10 推出了名為「根據日常安排」的節能模式時間表選項。這個選項可讓原始設備製造商 (OEM) 選擇的應用程式向系統提供信號,以便更智慧地安排省電模式。這個選項需要設定,但實作方式並非強制規定。

裝置設定

供應商規格

如要通知「Settings」 UI 的裝置設定正確無誤,請使用設定疊加層,將 config_batterySaverScheduleProvider 值覆寫為應用程式的套件名稱。

舉例來說,如果您希望應用程式套件 com.google.android.apps.turbo 控制「根據例行動作」設定,請設定以下設定值:

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

手機現在應會顯示「根據日常生活習慣」選項。如要驗證,請建構映像檔、將其閃燈至手機,然後依序前往「設定」>「電池」>「省電模式」>「省電模式時間表」。畫面上應會顯示「根據日常安排」選項。

預設關閉門檻

新的 config_dynamicPowerSavingsDefaultDisableThreshold 欄位會指定電池電量,當系統透過根據例行程序排程器開啟省電模式時,系統會關閉省電模式。系統預設值為 80%,但您可以變更。

應用程式設定

權限

應用程式需要的 API 可讓應用程式從應用程式啟用省電模式,這些 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) 必須負責測試整合作業,確保行為符合預期。請特別確認裝置是否能完成下列工作:

  • 使用者在節能模式排程 UI 中選取「依百分比」,然後選取 15%。省電模式應僅在電量達到 15% 時才自動開啟。
  • 使用者在省電模式時間表 UI 中選取「根據日常安排」。當應用程式使用 true 呼叫 API 時,省電模式就會開啟。此外,如果裝置充電至指定的閾值,並且已拔除電源,省電模式就會自動關閉。
  • 使用者在省電模式時間表 UI 中選取「無」。省電模式應該會自動開啟。
  • 如果應用程式開啟省電模式,且使用者手動覆寫省電模式以再次關閉 (例如透過「快速設定」、「設定」等),則應「保持關閉」,直到使用者手動重新開啟或接上裝置為止。