Di Android 11, tidur tidak memperhatikan adalah fitur hemat daya
yang memungkinkan waktu tunggu tidak aktif pengguna ditetapkan setelah layar dimatikan, bahkan
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 untuk memperingatkan pengguna bahwa perangkat akan memasuki 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 Pemutaran Sekali Sentuh
- Memulai sesi transmisi baru
Penyesuaian
Jika fitur ini diaktifkan, perangkat akan menampilkan peringatan di layar setelah pengguna tidak aktif selama waktu yang ditentukan. Jika tidak ada tindakan yang dilakukan, layar akan nonaktif. 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 saat tidak ada aktivitas pengguna sebelum layar dinonaktifkan (meskipun wakelock layar aktif).
- Ditetapkan pada waktu build.
- Jika nilainya antara
0
danconfig_minimumScreenOffTimeout
, waktu tunggu ditetapkan keconfig_minimumScreenOffTimeout
untuk mencegah perangkat menonaktifkan layarnya segera setelah diaktifkan. - 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 tidak ada aktivitas default yang ditetapkan oleh
config_attentiveTimeout
. - Dapat disetel 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 yang lama.
- Nilai harus jauh di bawah waktu tunggu tidak aktif saat tidur 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 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 perintah berikut.
- Mengganti
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 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 di setelan.
Contoh kasus pengujian manual
Pastikan setelan developer
stay_on_while_plugged_in
dinonaktifkan 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 tidak fokus beberapa detik lebih lama dari durasi dialog peringatan.
adb shell settings put secure attentive_timeout 32000
- Mulai memutar kembali video (untuk mendapatkan wakelock layar).
- Verifikasi bahwa dialog peringatan tidur muncul setelah beberapa detik.
- Pastikan layar dinonaktifkan setelah waktu tunggu yang ditetapkan berakhir.