Di Android 11, tidur tidak memperhatikan adalah fitur hemat daya
yang memungkinkan waktu tunggu tidak aktif pengguna ditetapkan, lalu layar dinonaktifkan, meskipun
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 ditetapkan, akan mengganti waktu tunggu tidur tidak waspada default yang ditetapkan 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 waktu untuk menampilkan pesan peringatan 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).
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
.
Referensi 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 langkah-langkah 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
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
- 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.