Trong Android 11, chế độ ngủ không chú ý là một tính năng tiết kiệm pin 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 khoá chế độ thức ở cấp FULL_WAKE_LOCK
, SCREEN_BRIGHT_WAKE_LOCK
hoặc SCREEN_DIM_WAKE_LOCK
được giữ lại.
Tính năng này không ảnh hưởng đến các khoá chế độ thức ở cấp PARTIAL_WAKE_LOCK
.
Ngay trước khi hết thời gian chờ, một thông báo có thể xuất hiện để 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 trường hợp này, hoạt động của người dùng là mọi hoạt động kích hoạt lệnh gọi đến
PowerManager#userActivity
(không có USER_ACTIVITY_FLAG_NO_CHANGE_LIGHTS
cờ), 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ý
- Sự kiện đầu vào từ một phụ kiện bên ngoài (ví dụ: bàn phím đã kết nối, điều khiển từ xa qua Bluetooth, điều khiển từ xa qua hồng ngoại)
- Tương tác bằng giọng nói
- Nhận một số thông báo HDMI CEC, chẳng hạn như One Touch Play
- Bắt đầu một phiên truyền mới
Tuỳ 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 khoảng thời gian không hoạt động nhất định của người dùng. Nếu bạn không thực hiện hành động nào, màn hình sẽ tắt. Bạn có thể tuỳ chỉnh tính năng này bằng cách sử dụng các tuỳ 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 mà người dùng không hoạt động, sau đó màn hình tắt (ngay cả khi khoá chế độ thức trên màn hình được thiết lập).
- Đặt tại thời điểm tạo bản dựng.
- Nếu giá trị nằm trong khoảng từ
0
đếnconfig_minimumScreenOffTimeout
, thì thời gian chờ sẽ đượ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 đè chế độ cài đặt thời gian chờ mặc định, hãy cập nhật phần tử sau đây.
Settings.Secure.ATTENTIVE_TIMEOUT
- Nếu được đặt, sẽ ghi đè thời gian chờ ngủ khi không chú ý mặc định do
config_attentiveTimeout
đặt. - Có thể được đặt 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 khi người dùng không hoạt động trong thời gian dài.
- Giá trị này phải thấp hơn nhiều so với thời gian chờ khi không chú ý đã đặt, nếu không, hộp thoại cảnh báo sẽ liên tục hiển thị và không thể đóng được.
- Mặc định:
30000
(30 giây).
Hiển thị các tuỳ chọn thời gian chờ trong TvSettings
Để hiển thị các lựa chọn ưu tiên về 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
- Liệu có hiển thị một mục lựa chọn ưu tiên để cho phép tắt màn hình trong khi phát nội dung nghe nhì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 đây 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
Bạn có thể thay đổi cấu hình và tài nguyên tại thời điểm tạo bản dựng bằng lớp phủ tài nguyên.
Triển khai
Bật tính năng này bằng cách sau.
- Ghi đè
config_attentiveTimeout
mặc định. - Nếu sử dụng
TvSettings
AOSP: - Tắt tính năng này trong phần cài đặt bằng cách
ghi đè
config_show_standby_timeout
. - Triển khai chế độ cài đặt của riêng bạn để đặt
Settings.Secure.ATTENTIVE_TIMEOUT
.
Xác nhận kết quả
Các thử nghiệm CTS cho tính năng này đã đạt đến
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ách triển khai 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 phần cài đặt.
Ví dụ về trường hợp kiểm thử thủ công
Hãy đảm bảo
stay_on_while_plugged_in
chế độ cài đặt của nhà phát triển đang tắt nếu HAL (Lớp trừu tượng phần cứng) cho 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 chặn tắt màn hình.
adb shell settings put global stay_on_while_plugged_in 0
- Đặt thời gian chờ khi người dùng không chú ý nhiều hơn vài giây so với thời lượng của hộp thoại cảnh báo.
adb shell settings put secure attentive_timeout 32000
- Bắt đầu phát lại một video (để bật tính năng khoá ở chế độ thức của màn hình).
- Xác minh rằng hộp thoại cảnh báo về 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.