Google is committed to advancing racial equity for Black communities. See how.
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

電視待機

在Android 11中,不專心睡眠是一項節能功能,該功能允許設置用戶不活動超時,此後設備進入睡眠狀態(即使保持了喚醒鎖)。超時即將到期之前,會顯示一條消息,警告用戶如果設備不與設備交互,則設備將進入睡眠狀態。

在這種情況下,用戶活動是指觸發對PowerManager#userActivity的調用的任何內容(不帶USER_ACTIVITY_FLAG_NO_CHANGE_LIGHTS標誌),包括但不限於:

  • 與觸摸屏互動
  • 按下物理按鈕
  • 來自外部附件的輸入事件(例如,已連接的鍵盤,藍牙遙控器,IR遙控器)
  • 語音互動
  • 接收某些HDMI CEC消息,例如一鍵播放
  • 開始新的演員表會話

客制化

如果啟用了此功能,則設備會在指定的用戶不活動時間後顯示屏幕警告。如果未採取任何措施,則設備進入睡眠狀態。您可以使用這些配置選項來自定義功能。

配置超時

要配置超時,請在frameworks/base/core/res/res/values/config.xml更新以下元素:

  • config_attentiveTimeout
    • 指定用戶不活動的默認時間(以毫秒為單位),在該時間後設備進入睡眠狀態(即使有喚醒鎖)。
    • 在構建時設置。
    • 如果該值介於0config_minimumScreenOffTimeout之間,則將超時設置為config_minimumScreenOffTimeout以防止設備在喚醒後立即進入睡眠狀態。
    • 默認值: -1 ,禁用此功能。

覆蓋默認超時

要覆蓋默認超時設置,請更新以下元素。

  • Settings.Secure.ATTENTIVE_TIMEOUT
    • 如果設置,則覆蓋由config_attentiveTimeout設置的默認非關注睡眠超時。
    • 可以在運行時設置。

配置警告出現之前的持續時間

要配置持續時間,請在frameworks/base/core/res/res/values/config.xml更新以下元素:

  • config_attentiveWarningDuration
    • 用戶長時間不活動後,設備進入睡眠狀態前向用戶顯示警告消息的時間。
    • 該值應遠低於設置的不注意睡眠超時,否則警告對話框將不斷顯示,並且無法將其關閉。
    • 預設值: 30000 (30s)。

在TvSettings中顯示超時首選項

要顯示超時首選項,請在packages/apps/TvSettings/Settings/res/values/config.xml更新以下元素:

  • config_show_standby_timeout
    • 是否顯示允許在媒體播放期間關閉屏幕的首選項。
    • 默認值: false

警告UI的資源

  • 警告對話框的佈局在frameworks/base/packages/SystemUI/res/layout/inattentive_sleep_warning.xml
  • 對話框的以下字符串在frameworks/base/packages/SystemUI/res/values/strings.xmlframeworks/base/packages/SystemUI/res-product/values/strings.xml
    • inattentive_sleep_warning_title
    • inattentive_sleep_warning_message

可以通過資源覆蓋來更改構建時間配置和資源。

實作

使用以下功能啟用該功能。

  1. 覆蓋默認的config_attentiveTimeout
  2. 如果使用AOSP TvSettings
    • 通過覆蓋config_show_standby_timeout禁用設置中的功能。
    • 實現您自己的設置,該設置Settings.Secure.ATTENTIVE_TIMEOUT

驗證方式

該功能的CTS測試位於cts/hostsidetests/os/src/android/os/cts/InattentiveSleepTests.java

實例和來源

  • frameworks/base/packages/SystemUI/src/com/android/systemui/power/InattentiveSleepWarningView.java包含默認的警告UI實施。
  • packages/apps/TvSettings提供了有關如何在設置中公開功能的示例。

手動測試用例示例

  1. 如果設備的運行狀況HAL報告設備有電池( battery_presenttrue ),請確保將stay_on_while_plugged_in開發人員設置關閉,因為這可能會阻止該功能使設備進入睡眠狀態。
    adb shell settings put global stay_on_while_plugged_in 0

  2. 將不注意的睡眠超時設置為比警告對話框持續時間多幾秒鐘。
    adb shell settings put secure attentive_timeout 32000
  3. 開始播放視頻(獲取喚醒鎖)。
  4. 驗證幾秒鐘後出現睡眠警告對話框。
  5. 設置超時後,驗證設備是否進入睡眠狀態。