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 權限保護。這是簽章或特殊權限。也就是說,應用程式必須位於系統映像檔的 priv-app 目錄中,且您必須明確授予這項權限。
如果是具備特殊權限的應用程式,您必須在與應用程式位於相同分割區的 /etc/permissions/ 目錄中,透過系統設定 XML 檔案授予權限。舉例來說,如要將 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>
如果未在系統映像檔中預先授予應用程式這項權限,應用程式就無法取得權限或順利呼叫 API。系統不會提供標準權限錯誤以外的回饋,因此請務必確認應用程式可以呼叫 API 並觀察其影響。
安裝
如要讓「根據日常安排」正常運作,您必須在系統映像檔中預先安裝應用程式,並授予必要權限。只授予一個應用程式 android.permission.POWER_SAVER 權限,並允許該應用程式控制「根據日常安排」 API。如果有多個應用程式嘗試使用權限和 API,系統不支援也不會指定這項功能的行為。
觸發省電模式日常安排
本節說明應用程式如何使用提供的 API,根據日常程序觸發「根據日常程序」省電模式。
API
如果設定成功,設定中指定的 OEM 應用程式就能順利呼叫 PowerManager 中的相關方法,觸發省電模式:
public boolean setDynamicPowerSaveHint(boolean powerSaveHint, int disableThreshold)
如果啟用「根據日常安排」省電模式時間表選項,且應用程式使用 powerSaveHint 的 true 值呼叫這個方法,系統就會開啟省電模式。請指定 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 會決定觸發「根據日常使用習慣」省電模式的行為,因此無法自動驗證這項功能。原始設備製造商必須測試整合功能,確認行為符合預期。具體來說,請確認裝置可以執行下列工作:
- 根據百分比:如果在「省電模式時間表」UI 中選取「根據百分比」並選取 15%,省電模式只會在電量達到 15% 時自動開啟。
- 根據日常安排:如果在「省電模式時間表」使用者介面中選取「根據日常安排」,應用程式以 true呼叫 API 時,系統就會開啟省電模式。此外,如果裝置充電至指定閾值電量後拔除電源線,省電模式也會自動關閉。
- 無:如果在「省電模式時間表」使用者介面中選取「無」,省電模式就不會自動開啟。
- 手動覆寫:如果應用程式開啟省電模式,而你手動覆寫省電模式並將其關閉 (使用「快速設定」、「設定」或其他方法),省電模式會保持關閉,直到你手動重新開啟或插入裝置為止。
