Di Android 11, tidur tidak aktif adalah fitur hemat daya yang memungkinkan waktu tunggu tidak ada aktivitas pengguna ditetapkan setelah 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.
Tidak lama sebelum waktu tunggu berakhir, pesan dapat ditampilkan yang memperingatkan pengguna bahwa perangkat akan tidur jika mereka tidak berinteraksi dengan perangkat.
Dalam konteks ini, aktivitas pengguna mengacu pada apa pun yang memicu panggilan ke PowerManager#userActivity (tanpa flag 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 terhubung, remote Bluetooth, remote IR)
- Interaksi suara
- Menerima pesan HDMI CEC tertentu, seperti One Touch Play
- Memulai sesi transmisi baru
Penyesuaian
Jika fitur ini diaktifkan, perangkat akan menampilkan peringatan di layar setelah waktu tidak ada aktivitas pengguna yang ditentukan. Jika tidak ada tindakan yang diambil, layar akan dinonaktifkan. Anda dapat menyesuaikan fitur ini 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 tidak ada aktivitas pengguna setelah layar dinonaktifkan (meskipun wakelock layar ada).
- Ditetapkan pada waktu build.
- Jika nilainya antara
0danconfig_minimumScreenOffTimeout, waktu tunggu akan ditetapkan keconfig_minimumScreenOffTimeoutuntuk mencegah perangkat menonaktifkan 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 ditetapkan, akan mengganti waktu tunggu tidur tidak aktif 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 menampilkan pesan peringatan kepada pengguna sebelum layar dinonaktifkan setelah tidak ada aktivitas pengguna dalam waktu lama.
- Nilai harus jauh di bawah waktu tunggu tidur tidak aktif 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- Apakah akan menampilkan item preferensi untuk mengizinkan layar dinonaktifkan 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 di
frameworks/base/packages/SystemUI/res/values/strings.xmldanframeworks/base/packages/SystemUI/res-product/values/strings.xml. inattentive_sleep_warning_titleinattentive_sleep_warning_message
Konfigurasi dan resource waktu build dapat diubah oleh overlay resource.
Penerapan
Aktifkan fitur ini menggunakan hal berikut.
- Ganti
config_attentiveTimeoutdefault. - Jika menggunakan
TvSettingsAOSP: - Nonaktifkan fitur ini 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.javaberisi implementasi UI peringatan default.packages/apps/TvSettingsmemberikan contoh cara menampilkan fitur ini di setelan.
Contoh kasus pengujian manual
Pastikan setelan
stay_on_while_plugged_indeveloper dinonaktifkan jika HAL kesehatan perangkat melaporkan bahwa perangkat memiliki baterai (battery_presentadalahtrue) karena hal ini dapat mencegah fitur menonaktifkan layar.
adb shell settings put global stay_on_while_plugged_in 0- Tetapkan waktu tunggu tidur tidak aktif beberapa detik lebih lama dari durasi dialog peringatan.
adb shell settings put secure attentive_timeout 32000 - Mulai putar video (untuk mendapatkan wakelock layar).
- Pastikan dialog peringatan tidur muncul setelah beberapa detik.
- Pastikan layar dinonaktifkan setelah waktu tunggu yang ditetapkan berakhir.