Siaga TV

Di Android 11, tidur lalai adalah fitur hemat daya yang memungkinkan waktu tunggu tidak aktif pengguna disetel setelah layar mati, meskipun jendela dengan FLAG_KEEP_SCREEN_ON terlihat atau penguncian layar 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 berakhir, 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 acara 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 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 layar mati (bahkan jika penguncian layar aktif).
    • Tetapkan pada waktu pembuatan.
    • Jika nilainya antara 0 dan config_minimumScreenOffTimeout , batas waktu diatur ke config_minimumScreenOffTimeout untuk mencegah perangkat mematikan layarnya segera setelah bangun.
    • 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 disetel, jika tidak, dialog peringatan ditampilkan terus-menerus dan tidak dapat ditutup.
    • Bawaan: 30000 (30 detik).

Menampilkan preferensi batas waktu di Pengaturan TV

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 memungkinkan mematikan layar selama pemutaran media.
    • Standar: false .

Sumber daya untuk UI peringatan

  • Tata letak dialog peringatan didefinisikan 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 dan sumber daya waktu pembuatan dapat diubah dengan hamparan sumber daya.

Penerapan

Aktifkan fitur menggunakan yang berikut ini.

  1. Ganti default config_attentiveTimeout .
  2. Jika menggunakan AOSP TvSettings :
    • Nonaktifkan fitur dalam pengaturan dengan config_show_standby_timeout .
    • Terapkan setelan Anda sendiri yang menyetel 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 bagaimana mengekspos fitur dalam pengaturan.

Contoh kasus uji manual

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

  2. Setel batas waktu tidur yang 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.