Di Android 11, tidur tidak memperhatikan adalah fitur hemat daya
yang memungkinkan waktu tunggu ketidakaktifan pengguna ditetapkan, lalu layar dinonaktifkan, meskipun
jika jendela dengan FLAG_KEEP_SCREEN_ON
terlihat atau wakelock level
FULL_WAKE_LOCK
,
SCREEN_BRIGHT_WAKE_LOCK
, atau
SCREEN_DIM_WAKE_LOCK
dipertahankan.
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 tanda USER_ACTIVITY_FLAG_NO_CHANGE_LIGHTS
), 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 HDMI CEC tertentu, seperti One Touch Play
- Memulai sesi transmisi baru
Penyesuaian
Jika fitur diaktifkan, perangkat akan menampilkan peringatan di layar setelah waktu tidak aktif pengguna yang ditentukan. 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 sudah diterapkan).
- Ditetapkan pada waktu build.
- Jika nilainya antara
0
danconfig_minimumScreenOffTimeout
, waktu tunggu ditetapkan keconfig_minimumScreenOffTimeout
untuk mencegah perangkat menonaktifkan layarnya segera setelah aktif. - 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 menggantikan 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 akan ditampilkan kepada pengguna sebelum layar dinonaktifkan setelah pengguna 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).
Tampilkan 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 di
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 perintah berikut.
- Ganti
config_attentiveTimeout
default. - Jika menggunakan
TvSettings
AOSP: - Nonaktifkan fitur di setelan dengan mengganti
config_show_standby_timeout
. - Terapkan setelan Anda sendiri
yang menetapkan
Settings.Secure.ATTENTIVE_TIMEOUT
.
Validasi
Uji CTS untuk fitur ini tersedia 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 mematikan layar.
adb shell settings put global stay_on_while_plugged_in 0
- Tetapkan waktu tunggu tidur yang tidak memperhatikan menjadi beberapa detik lebih lama dari durasi dialog peringatan.
adb shell settings put secure attentive_timeout 32000
- Mulai memutar video (untuk mendapatkan wakelock layar).
- Pastikan dialog peringatan tidur muncul setelah beberapa detik.
- Pastikan layar mati setelah waktu tunggu yang ditetapkan berakhir.