Di Android 11, tidur tanpa perhatian adalah fitur penghemat daya
yang memungkinkan waktu tunggu ketidakaktifan pengguna disetel setelah layar dinonaktifkan, bahkan
jika jendela dengan FLAG_KEEP_SCREEN_ON
terlihat atau wakelock pada level
FULL_WAKE_LOCK
,
SCREEN_BRIGHT_WAKE_LOCK
atau
SCREEN_DIM_WAKE_LOCK
akan ditangguhkan.
Wakelock dengan level PARTIAL_WAKE_LOCK
tidak terpengaruh oleh fitur ini.
Sesaat sebelum waktu tunggu berakhir, pesan dapat ditampilkan yang memperingatkan
pengguna bahwa perangkat akan beralih ke mode tidur jika mereka tidak berinteraksi dengan perangkat.
Dalam konteks ini, aktivitas pengguna mengacu pada
apa pun yang memicu panggilan ke
PowerManager#userActivity
(tanpa USER_ACTIVITY_FLAG_NO_CHANGE_LIGHTS
flag), termasuk, tetapi tidak terbatas pada:
- Berinteraksi dengan layar sentuh
- Menekan tombol fisik
- Peristiwa input dari aksesori eksternal (misalnya, keyboard yang terhubung, remote Bluetooth, remote IR)
- Interaksi suara
- Menerima pesan CEC HDMI tertentu, seperti One Touch Play
- Memulai sesi transmisi baru
Penyesuaian
Jika fitur ini diaktifkan, perangkat akan menampilkan peringatan di layar setelah waktu tertentu ketidakaktifan pengguna. Jika tidak ada tindakan yang dilakukan, layar akan mati. Anda dapat menyesuaikan fitur menggunakan opsi konfigurasi ini.
Mengonfigurasi waktu tunggu
Untuk mengonfigurasi waktu tunggu, perbarui elemen berikut di
frameworks/base/core/res/res/values/config.xml
:
config_attentiveTimeout
- Menentukan waktu default dalam milidetik untuk tidak adanya aktivitas pengguna, setelah itu layar akan dinonaktifkan (meskipun wakelock layar diterapkan).
- Tetapkan pada waktu build.
- Jika nilainya antara
0
danconfig_minimumScreenOffTimeout
, waktu tunggu disetel keconfig_minimumScreenOffTimeout
untuk mencegah perangkat mematikan layarnya segera setelah bangun. - Default:
-1
, yang menonaktifkan fitur ini.
Mengganti waktu tunggu default
Untuk mengganti setelan waktu tunggu default, perbarui elemen berikut.
Settings.Secure.ATTENTIVE_TIMEOUT
- Jika disetel, akan mengganti waktu tunggu tidur inattentif default yang disetel oleh
config_attentiveTimeout
. - Dapat ditetapkan saat runtime.
Mengonfigurasi durasi sebelum peringatan muncul
Untuk mengonfigurasi durasi, perbarui elemen berikut di
frameworks/base/core/res/res/values/config.xml
:
config_attentiveWarningDuration
- Durasi pesan peringatan ditampilkan kepada pengguna sebelum layar dinonaktifkan tidak aktif dalam waktu lama.
- Nilainya harus jauh di bawah waktu tunggu tidur tidak memperhatikan yang ditetapkan. Jika tidak, dialog peringatan akan terus ditampilkan dan tidak dapat ditutup.
- Default:
30000
(30 detik).
Menampilkan preferensi waktu tunggu di TvSettings
Untuk menampilkan preferensi waktu tunggu, perbarui elemen berikut di
packages/apps/TvSettings/Settings/res/values/config.xml
:
config_show_standby_timeout
- Menentukan apakah akan menampilkan item preferensi untuk mengizinkan penonaktifan layar selama pemutaran media.
- Default:
false
.
Resource untuk UI peringatan
- Tata letak dialog peringatan ditentukan dalam
frameworks/base/packages/SystemUI/res/layout/inattentive_sleep_warning.xml
. - String berikut untuk dialog ditentukan 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 resource waktu build dapat diubah oleh overlay resource.
Implementasi
Aktifkan fitur menggunakan kode berikut.
- Ganti
config_attentiveTimeout
default. - Jika menggunakan
TvSettings
AOSP: - Nonaktifkan fitur di setelan dengan
menggantikan
config_show_standby_timeout
. - Menerapkan setelan Anda sendiri
yang menetapkan
Settings.Secure.ATTENTIVE_TIMEOUT
.
Validasi
Pengujian CTS untuk fitur ini berada 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 di setelan.
Contoh kasus pengujian manual
Pastikan setelan developer
stay_on_while_plugged_in
nonaktif jika HAL kesehatan perangkat melaporkan bahwa perangkat memiliki baterai (battery_present
adalahtrue
) karena hal ini dapat mencegah fitur menonaktifkan layar.
adb shell settings put global stay_on_while_plugged_in 0
- Setel waktu tunggu tidur yang tidak penuh perhatian menjadi beberapa detik lebih lama dari durasi dialog peringatan.
adb shell settings put secure attentive_timeout 32000
- Mulai memutar video (untuk mendapatkan penguncian layar saat aktif).
- Pastikan dialog peringatan tidur muncul setelah beberapa detik.
- Pastikan layar dinonaktifkan setelah waktu tunggu yang disetel berakhir.