TV Siaga

Di Android 11, lalai tidur adalah fitur hemat daya yang memungkinkan batas waktu ketidakaktifan pengguna disetel setelah layar mati, meskipun jendela dengan FLAG_KEEP_SCREEN_ON terlihat atau wakelock pada level FULL_WAKE_LOCK , SCREEN_BRIGHT_WAKE_LOCK , atau SCREEN_DIM_WAKE_LOCK ditahan. Wakelock dengan level PARTIAL_WAKE_LOCK tidak terpengaruh oleh fitur ini. Sesaat sebelum batas waktu habis, sebuah pesan dapat ditampilkan yang memperingatkan pengguna bahwa perangkat akan tertidur jika mereka tidak berinteraksi dengan perangkat.

Dalam konteks ini, aktivitas pengguna mengacu pada apa pun yang memicu panggilan ke PowerManager#userActivity (tanpa tanda USER_ACTIVITY_FLAG_NO_CHANGE_LIGHTS ), termasuk namun tidak terbatas pada:

  • Berinteraksi dengan layar sentuh
  • Menekan tombol fisik
  • Masukkan peristiwa dari aksesori eksternal (misalnya, keyboard yang terhubung, remote bluetooth, remote IR)
  • Interaksi suara
  • Menerima pesan HDMI CEC tertentu, seperti One Touch Play
  • Memulai sesi pemeran baru

Kustomisasi

Jika fitur ini diaktifkan, perangkat akan menampilkan peringatan di layar setelah waktu tertentu ketika pengguna tidak aktif. Jika tidak ada tindakan yang diambil, layar akan mati. Anda dapat menyesuaikan fitur menggunakan opsi konfigurasi ini.

Mengonfigurasi batas waktu

Untuk mengonfigurasi batas waktu, perbarui elemen berikut di frameworks/base/core/res/res/values/config.xml :

  • config_attentiveTimeout
    • Menentukan waktu default dalam milidetik saat pengguna tidak aktif, setelah itu layar akan mati (meskipun penguncian layar aktif).
    • Ditetapkan pada waktu pembuatan.
    • Jika nilainya antara 0 dan config_minimumScreenOffTimeout , batas waktu diatur ke config_minimumScreenOffTimeout untuk mencegah perangkat mematikan layarnya segera setelah bangun tidur.
    • Default: -1 , yang menonaktifkan fitur ini.

Mengganti batas waktu default

Untuk mengganti pengaturan batas waktu default, perbarui elemen berikut.

  • Settings.Secure.ATTENTIVE_TIMEOUT
    • Jika disetel, ganti batas waktu tidur lalai default yang ditetapkan oleh config_attentiveTimeout .
    • Dapat diatur saat runtime.

Mengonfigurasi durasi sebelum peringatan muncul

Untuk mengonfigurasi durasi, perbarui elemen berikut di frameworks/base/core/res/res/values/config.xml :

  • config_attentiveWarningDuration
    • Berapa lama untuk menampilkan pesan peringatan kepada pengguna sebelum layar mati setelah pengguna tidak aktif dalam waktu lama.
    • Nilainya harus jauh di bawah batas waktu tidur lalai yang ditetapkan, jika tidak, dialog peringatan akan terus muncul dan tidak dapat ditutup.
    • Default: 30000 (30 detik).

Menampilkan preferensi batas waktu di TvSettings

Untuk menampilkan preferensi batas waktu, perbarui elemen berikut di packages/apps/TvSettings/Settings/res/values/config.xml :

  • config_show_standby_timeout
    • Apakah akan menampilkan item preferensi untuk mengizinkan mematikan layar selama pemutaran media.
    • Bawaan: false .

Sumber daya untuk UI peringatan

  • Tata letak dialog peringatan ditentukan dalam frameworks/base/packages/SystemUI/res/layout/inattentive_sleep_warning.xml .
  • String berikut untuk dialog didefinisikan dalam frameworks/base/packages/SystemUI/res/values/strings.xml dan frameworks/base/packages/SystemUI/res-product/values/strings.xml .
    • inattentive_sleep_warning_title
    • inattentive_sleep_warning_message

Konfigurasi waktu build dan sumber daya dapat diubah dengan hamparan sumber daya.

Penerapan

Aktifkan fitur menggunakan yang berikut ini.

  1. Ganti config_attentiveTimeout default.
  2. Jika menggunakan AOSP TvSettings :
    • Nonaktifkan fitur dalam pengaturan dengan mengganti config_show_standby_timeout .
    • Terapkan pengaturan Anda sendiri yang menetapkan Settings.Secure.ATTENTIVE_TIMEOUT .

Validasi

Tes CTS untuk fitur ini ada di cts/hostsidetests/os/src/android/os/cts/InattentiveSleepTests.java .

Contoh dan sumber

  • frameworks/base/packages/SystemUI/src/com/android/systemui/power/InattentiveSleepWarningView.java berisi implementasi UI peringatan default.
  • packages/apps/TvSettings memberikan contoh cara mengekspos fitur dalam pengaturan.

Contoh kasus uji manual

  1. Pastikan setelan pengembang stay_on_while_plugged_in dinonaktifkan jika HAL kesehatan perangkat melaporkan bahwa perangkat memiliki baterai ( battery_present adalah true ) karena hal ini dapat mencegah fitur mematikan layar.
    adb shell settings put global stay_on_while_plugged_in 0

  2. Tetapkan batas waktu tidur lalai menjadi beberapa detik lebih lama dari durasi dialog peringatan.
    adb shell settings put secure attentive_timeout 32000
  3. Mulai memutar ulang video (untuk mendapatkan penguncian layar).
  4. Pastikan dialog peringatan tidur muncul setelah beberapa detik.
  5. Pastikan layar mati setelah batas waktu yang ditetapkan berakhir.