Chế độ chờ TV

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 đến config_minimumScreenOffTimeout , thời gian chờ được đặt thành config_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.xmlframeworks/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.

  1. Ghi đè config_attentiveTimeout mặc định.
  2. 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 thử nghiệm 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

  1. Đả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_presenttrue ) 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

  2. Đặ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
  3. Bắt đầu phát lại video (để có được khóa màn hình).
  4. 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.
  5. Xác minh rằng màn hình tắt sau khi hết thời gian chờ đã đặt.