Sebelum menandai posting ini sebagai "duplikat", saya menulis posting ini karena tidak ada posting lain yang memiliki solusi untuk masalah tersebut.
Saya mencoba mematikan perangkat, lalu setelah beberapa menit atau sensor berubah, hidupkan kembali.
Matikan Tes Tampilan
Saya bisa mematikan layar menggunakan:
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = 0;
getWindow().setAttributes(params);
Saya tidak dapat mematikan layar menggunakan metode wl.release ().
Nyalakan Tes Tampilan
Tebakan pertama saya, sebagai berikut, tidak berhasil. Tidak ada yang terjadi, layar tetap mati.
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = -1f;
getWindow().setAttributes(params);
Saya juga kemudian mencoba menggunakan wakelocks, tetapi tidak berhasil.
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "tag");
wl.acquire();
Akhirnya saya mencoba yang berikut ini, tanpa hasil.
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
Secara keseluruhan, saya tidak mendapatkan kesalahan apa pun di konsol untuk salah satu metode ini. Teks pengujian saya "Layar harus menyala", ada di layar saat saya menyalakan perangkat menggunakan tombol daya. Ini menunjukkan bahwa kode seharusnya sudah berjalan. Tolong jawab saja jika anda sudah menguji kodenya, sepertinya banyak fungsi seperti params.screenBrightness = -1
, tidak berfungsi sebagaimana mestinya sesuai dengan sdk.
Jawaban:
Saya akan menganggap Anda hanya ingin ini berlaku saat aplikasi Anda berada di latar depan.
Kode ini:
Tidak mematikan layar dalam pengertian tradisional. Itu membuat layar menjadi redup mungkin. Pada platform standar ada batasan seberapa redupnya; jika perangkat Anda benar-benar memungkinkan layar untuk mati sepenuhnya, maka itu adalah beberapa keanehan dari penerapan perangkat itu dan bukan perilaku yang dapat Anda andalkan di seluruh perangkat.
Bahkan menggunakan ini dalam hubungannya dengan FLAG_KEEP_SCREEN_ON berarti Anda tidak akan pernah membiarkan layar mati (dan dengan demikian perangkat masuk ke mode daya rendah) bahkan jika perangkat tertentu memungkinkan Anda untuk mengatur kecerahan layar menjadi mati penuh. Ingatlah ini dengan sangat kuat. Anda akan menggunakan lebih banyak daya daripada jika layar benar-benar mati.
Sekarang untuk mengembalikan layar ke kecerahan biasa, cukup dengan mengatur nilai kecerahan sudah cukup:
Saya tidak bisa menjelaskan mengapa ini tidak menggantikan nilai 0 yang telah Anda tetapkan sebelumnya. Sebagai ujian, Anda dapat mencoba menempatkan kecerahan penuh paksa di sana untuk memaksa kecerahan spesifik itu:
Ini pasti berhasil. Misalnya, aplikasi Buku Google menggunakan ini untuk memungkinkan Anda menyetel kecerahan layar menjadi redup saat menggunakan buku dan kemudian kembali ke kecerahan biasa saat mematikannya.
Untuk membantu men-debug, Anda dapat menggunakan "jendela adb shell dumpsys" untuk melihat status jendela Anda saat ini. Dalam data untuk jendela Anda, ini akan memberi tahu Anda LayoutParams saat ini yang telah ditetapkan untuknya. Pastikan nilai yang menurut Anda benar-benar ada.
Dan lagi, FLAG_KEEP_SCREEN_ON adalah konsep yang terpisah; dan kecerahan tidak berdampak langsung satu sama lain. (Dan tidak akan ada alasan untuk menyetel bendera lagi saat membatalkan kecerahan, jika Anda telah mengaturnya saat mengatur kecerahan ke 0. Bendera akan tetap disetel sampai Anda mengubahnya.)
sumber
Saya telah menulis metode ini untuk menghidupkan layar setelah kunci layar. Ini bekerja dengan sempurna untuk saya. Cobalah-
Dan panggil metode ini dari
onResume()
.sumber
Saya akan menyarankan yang ini:
Bendera ACQUIRE_CAUSES_WAKEUP dijelaskan seperti itu:
Selain itu, pastikan Anda memiliki izin berikut di file AndroidManifewst.xml:
sumber
Hai, saya harap ini akan membantu:
sumber
PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK
yang hanya mematikan layar saat sensor jarak berada dalam status "dekat".PROXIMITY_SCREEN_OFF_WAKE_LOCK
kunci tunggu, layar kembali menyala. Bagaimana cara mencegahnya?// File Manifes Pengguna
sumber
Apakah Anda yakin Anda meminta izin yang sesuai di file Manifest Anda?
Anda bisa menggunakan kelas AlarmManager 1 untuk mengaktifkan maksud yang memulai aktivitas Anda dan memperoleh kunci bangun. Ini akan menghidupkan layar dan tetap menyala. Melepaskan wakelock akan memungkinkan perangkat tidur sendiri.
Anda juga dapat melihat penggunaan PowerManager untuk menyetel perangkat ke mode tidur: http://developer.android.com/reference/android/os/PowerManager.html#goToSleep(long)
sumber
Cara terbaik untuk melakukannya (menggunakan perangkat yang di-rooting):
Sekarang kami memiliki dua fungsi ini:
Dan ini:
Maaf atas bahasa Inggris saya yang buruk.
sumber
Berikut adalah contoh sukses dari implementasi hal yang sama, pada perangkat yang mendukung nilai kecerahan layar yang lebih rendah (saya uji pada tablet Allwinner China 7 "yang menjalankan API15).
Jika orang lain mencoba ini, tolong beri komentar di bawah jika berfungsi / tidak berfungsi dan perangkatnya, Android API.
sumber
Untuk menjaga layar tetap menyala:
Kembali ke mode default layar: hapus saja bendera FLAG_KEEP_SCREEN_ON
sumber
Ini bekerja di Marshmallow
sumber
Mengenai dokumentasi Android, hal itu dapat dicapai dengan menggunakan baris kode berikut:
Saya telah menambahkan ini dalam
onCreate
metode saya dan berfungsi dengan baik.Di tautan tersebut Anda akan menemukan berbagai cara untuk mencapai ini dan penjelasan umum juga.
Tautan ke dokumentasi: https://developer.android.com/training/scheduling/wakelock.html
sumber
Jika aplikasi Anda adalah aplikasi sistem, Anda bisa menggunakan PowerManager.goToSleep () untuk mematikan layar, Anda memerlukan izin khusus
sebelum Anda menggunakan goToSleep (), Anda perlu menggunakan refleksi seperti:
Sekarang, Anda dapat menggunakan goToSleep () untuk mematikan layar.
sumber
Cukup tambahkan
atau telepon
pada pandangan orang tua.
sumber
Saya tidak memiliki harapan untuk "membangunkan layar" dalam aktivitas tersebut. Jika layar mati, aktivitas mungkin dalam keadaan jeda dan seharusnya tidak menjalankan kode apa pun.
Saat bangun, ada masalah pada layar kunci. Saya tidak tahu bagaimana aplikasi apa pun dapat secara otomatis melewati layar kunci.
Anda harus mempertimbangkan untuk menjalankan tugas latar belakang Anda dalam suatu layanan, dan kemudian menggunakan pengelola pemberitahuan untuk mengirim pemberitahuan ketika ada yang terdeteksi. Pemberitahuan harus memberikan semacam peringatan perangkat (layar bangun, ikon pemberitahuan, dipimpin pemberitahuan, dll). Saat mengklik notifikasi itu bisa meluncurkan maksud untuk memulai aktivitas Anda.
Anda juga dapat mencoba untuk memulai aktivitas langsung dari layanan, tetapi saya benar-benar tidak tahu apakah itu akan mengaktifkan layar atau melewati layar kunci.
sumber
Sesuai Android API 28 dan yang lebih baru, Anda perlu melakukan hal berikut untuk menyalakan layar
sumber
Saya telah mencoba semua solusi di atas tetapi tidak ada yang berhasil untuk saya. jadi saya mencari di Google dan menemukan solusi di bawah ini. Saya mencoba dan berhasil.
https://www.tutorialspoint.com/how-to-turn-android-device-screen-on-and-off-programmatically
jika ada saran tolong beri
sumber