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
danconfig_minimumScreenOffTimeout
, batas waktu diatur keconfig_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
danframeworks/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.
- Ganti default
config_attentiveTimeout
. - 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
Pastikan setelan pengembang
stay_on_while_plugged_in
dimatikan jika HAL kesehatan perangkat melaporkan bahwa perangkat memiliki baterai (battery_present
istrue
) karena hal ini dapat mencegah fitur mematikan layar.
adb shell settings put global stay_on_while_plugged_in 0
- Setel batas waktu tidur yang lalai menjadi beberapa detik lebih lama dari durasi dialog peringatan.
adb shell settings put secure attentive_timeout 32000
- Mulai memutar ulang video (untuk mendapatkan penguncian layar).
- Pastikan dialog peringatan tidur muncul setelah beberapa detik.
- Pastikan layar mati setelah batas waktu yang ditetapkan berakhir.