Trong Android 11, chế độ ngủ không chú ý là một tính năng tiết kiệm năng lượng cho phép đặt thời gian chờ khi người dùng không hoạt động, sau đó màn hình sẽ tắt, ngay cả khi các cửa sổ có FLAG_KEEP_SCREEN_ON
hiển thị hoặc khóa chế độ thức ở cấp FULL_WAKE_LOCK
, SCREEN_BRIGHT_WAKE_LOCK
hoặc SCREEN_DIM_WAKE_LOCK
được giữ. Wakelocks có cấp độ PARTIAL_WAKE_LOCK
không bị ảnh hưởng bởi tính năng này. Ngay trước khi hết thời gian chờ, một thông báo có thể hiển thị cảnh báo người dùng rằng thiết bị sẽ chuyển sang chế độ ngủ nếu họ không tương tác với thiết bị.
Trong ngữ cảnh này, hoạt động của người dùng đề cập đến bất kỳ điều gì kích hoạt lệnh gọi tới PowerManager#userActivity
(không có cờ USER_ACTIVITY_FLAG_NO_CHANGE_LIGHTS
), bao gồm nhưng không giới hạn ở:
- Tương tác với màn hình cảm ứng
- Nhấn nút vật lý
- Nhập sự kiện từ phụ kiện bên ngoài (ví dụ: bàn phím được kết nối, điều khiển từ xa Bluetooth, điều khiển từ xa IR)
- Tương tác bằng giọng nói
- Nhận một số thông báo HDMI CEC nhất định, chẳng hạn như One Touch Play
- Bắt đầu một phiên diễn viên mới
Tùy chỉnh
Nếu tính năng này được bật, thiết bị sẽ hiển thị cảnh báo trên màn hình sau một thời gian người dùng không hoạt động được chỉ định. Nếu không có hành động nào được thực hiện, màn hình sẽ tắt. Bạn có thể tùy chỉnh tính năng này bằng cách sử dụng các tùy chọn cấu hình này.
Định cấu hình thời gian chờ
Để định cấu hình thời gian chờ, hãy cập nhật phần tử sau trong frameworks/base/core/res/res/values/config.xml
:
-
config_attentiveTimeout
- Chỉ định thời gian mặc định tính bằng mili giây khi người dùng không hoạt động, sau đó màn hình sẽ tắt (ngay cả khi khóa màn hình được đặt).
- Đặt tại thời điểm xây dựng.
- Nếu giá trị nằm trong khoảng từ
0
đếnconfig_minimumScreenOffTimeout
thì thời gian chờ được đặt thànhconfig_minimumScreenOffTimeout
để ngăn thiết bị tắt màn hình ngay sau khi thức dậy. - Mặc định:
-1
, tắt tính năng này.
Ghi đè thời gian chờ mặc định
Để ghi đè cài đặt thời gian chờ mặc định, hãy cập nhật phần tử sau.
-
Settings.Secure.ATTENTIVE_TIMEOUT
- Nếu được đặt, sẽ ghi đè thời gian chờ ngủ không chú ý mặc định do
config_attentiveTimeout
đặt. - Có thể được thiết lập trong thời gian chạy.
Định cấu hình thời lượng trước khi cảnh báo xuất hiện
Để định cấu hình thời lượng, hãy cập nhật phần tử sau trong frameworks/base/core/res/res/values/config.xml
:
-
config_attentiveWarningDuration
- Khoảng thời gian hiển thị thông báo cảnh báo cho người dùng trước khi màn hình tắt sau một thời gian dài người dùng không hoạt động.
- Giá trị này phải thấp hơn nhiều so với thời gian chờ ngủ không chú ý đã đặt, nếu không, hộp thoại cảnh báo sẽ hiển thị liên tục và không thể loại bỏ được.
- Mặc định:
30000
(30 giây).
Hiển thị tùy chọn thời gian chờ trong TvSettings
Để hiển thị tùy chọn thời gian chờ, hãy cập nhật phần tử sau trong packages/apps/TvSettings/Settings/res/values/config.xml
:
-
config_show_standby_timeout
- Có hiển thị mục ưu tiên cho phép tắt màn hình trong khi phát lại phương tiện hay không.
- Mặc định:
false
.
Tài nguyên cho giao diện người dùng cảnh báo
- Bố cục của hộp thoại cảnh báo được xác định trong
frameworks/base/packages/SystemUI/res/layout/inattentive_sleep_warning.xml
. - Các chuỗi sau cho hộp thoại được xác định trong
frameworks/base/packages/SystemUI/res/values/strings.xml
vàframeworks/base/packages/SystemUI/res-product/values/strings.xml
. -
inattentive_sleep_warning_title
-
inattentive_sleep_warning_message
Cấu hình thời gian xây dựng và tài nguyên có thể được thay đổi bằng lớp phủ tài nguyên.
Thực hiện
Kích hoạt tính năng này bằng cách sử dụng như sau.
- Ghi đè
config_attentiveTimeout
mặc định. - Nếu sử dụng AOSP
TvSettings
: - Tắt tính năng này trong cài đặt bằng cách ghi đè
config_show_standby_timeout
. - Triển khai cài đặt của riêng bạn bằng cách đặt
Settings.Secure.ATTENTIVE_TIMEOUT
.
Thẩm định
Các bài kiểm tra CTS cho tính năng này có tại cts/hostsidetests/os/src/android/os/cts/InattentiveSleepTests.java
.
Ví dụ và nguồn
-
frameworks/base/packages/SystemUI/src/com/android/systemui/power/InattentiveSleepWarningView.java
chứa cài đặt giao diện người dùng cảnh báo mặc định. -
packages/apps/TvSettings
cung cấp ví dụ về cách hiển thị tính năng này trong cài đặt.
Ví dụ về trường hợp kiểm thử thủ công
Đảm bảo cài đặt dành cho nhà phát triển
stay_on_while_plugged_in
bị tắt nếu HAL tình trạng của thiết bị báo cáo rằng thiết bị có pin (battery_present
làtrue
) vì điều này có thể ngăn tính năng tắt màn hình.
adb shell settings put global stay_on_while_plugged_in 0
- Đặt thời gian chờ khi ngủ không chú ý nhiều hơn thời lượng của hộp thoại cảnh báo vài giây.
adb shell settings put secure attentive_timeout 32000
- Bắt đầu phát lại video (để có được khóa màn hình).
- Xác minh rằng hộp thoại cảnh báo giấc ngủ xuất hiện sau vài giây.
- Xác minh rằng màn hình tắt sau khi hết thời gian chờ đã đặt.