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.
Konfigurasikan 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
danconfig_minimumScreenOffTimeout
, batas waktu diatur keconfig_minimumScreenOffTimeout
untuk mencegah perangkat mematikan layarnya segera setelah bangun tidur. - Default:
-1
, yang menonaktifkan fitur ini.
Ganti 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.
Konfigurasikan 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).
Tampilkan 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
danframeworks/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.
- Ganti
config_attentiveTimeout
default. - 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
Pastikan setelan pengembang
stay_on_while_plugged_in
dinonaktifkan jika HAL kesehatan perangkat melaporkan bahwa perangkat memiliki baterai (battery_present
adalahtrue
) karena hal ini dapat mencegah fitur mematikan layar.
adb shell settings put global stay_on_while_plugged_in 0
- Tetapkan batas waktu tidur 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.