Ini mengharuskan Anda memberi aplikasi Anda izin tambahan, dan sangat mudah untuk memperkenalkan bug di mana Anda secara tidak sengaja tetap memegang kunci layar dan membiarkan layar menyala.
Jauh, jauh lebih baik menggunakan bendera jendela FLAG_KEEP_SCREEN_ON, yang dapat Anda aktifkan di jendela aktivitas Anda onCreate()seperti ini:
Ini akan memastikan bahwa layar tetap menyala saat jendela Anda berada di latar depan, dan hanya saat berada di latar depan. Ini sangat menyederhanakan kasus penggunaan umum ini, menghilangkan semua juggling yang perlu Anda lakukan saat aplikasi Anda bertransisi antar status.
Apakah itu mencegah perangkat tidur? Jika demikian, WAKE_LOCK menurut saya merupakan kesalahan yang mengejutkan!
Michael Cramer
32
Ya itu membuat layar menyala dan mencegah perangkat tidur.
hackbod
1
Ya, Anda dapat menghapus bendera, dengan API jendela yang sesuai. Anda tidak perlu khawatir membuat apa pun digambar, kerangka kerja akan melakukannya jika diperlukan.
hackbod
1
@hakbod: ini akan berfungsi untuk menjaga layar tetap hidup, tapi bagaimana dengan layar yang sedang tidur, apakah itu akan membangunkannya dan menjaganya tetap hidup ????
Kavitha
5
@ KC202 Anda dapat menggunakan WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON untuk membuat layar menyala saat jendela Anda ditampilkan. Juga sering digunakan dengan FLAG_DISMISS_KEYGUARD dan / atau FLAG_SHOW_WHEN_LOCKED.
hackbod
34
Pertanyaan ini Sudah Jawaban Hebat oleh @hackbod!
Saya Menjawab Pertanyaan ini dengan Dua Solusi Tambahan!
1.implementation menggunakansetKeepScreenOn() in java code
@Overrideprotectedvoid onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);// or any View (in case generated programmatically ) View v = getLayoutInflater().inflate(R.layout.driver_home,null);
v.setKeepScreenOn(true);
setContentView(v);}
1. Tidak masalah yang keepScreenOnharus digunakan di Main/Root/Parent Viewatasnya dapat digunakan dengan apa pun child viewakan berfungsi Seperti halnya bekerja diParent view
2. Satu-satunya masalah adalah bahwa View's Visibility must be visiblejika tidak, itu tidak akan berhasil!
catatan v.setKeepScreenOn(true);tampaknya menjadi satu-satunya cara untuk melakukannya untuk bingkai dialog layar penuh
Tim
16
Solusi lain adalah menambahkan android:keepScreenOn="true"( dokumentasi ) ke tampilan yang perlu tetap mengaktifkan layar.
Memungkinkan kontrol yang lebih terperinci dalam hal tampilan mana yang tetap aktif dan mana yang tidak. Anda bahkan dapat mereferensikan setelan dari file sumber daya dengan cara ini.
Jawaban:
JANGAN GUNAKAN KUNCI BANGUN
Ini mengharuskan Anda memberi aplikasi Anda izin tambahan, dan sangat mudah untuk memperkenalkan bug di mana Anda secara tidak sengaja tetap memegang kunci layar dan membiarkan layar menyala.
Jauh, jauh lebih baik menggunakan bendera jendela
FLAG_KEEP_SCREEN_ON
, yang dapat Anda aktifkan di jendela aktivitas AndaonCreate()
seperti ini:Ini akan memastikan bahwa layar tetap menyala saat jendela Anda berada di latar depan, dan hanya saat berada di latar depan. Ini sangat menyederhanakan kasus penggunaan umum ini, menghilangkan semua juggling yang perlu Anda lakukan saat aplikasi Anda bertransisi antar status.
sumber
Pertanyaan ini Sudah Jawaban Hebat oleh @hackbod!
Saya Menjawab Pertanyaan ini dengan Dua Solusi Tambahan!
Solusi yang Ada:
Solusi Tambahan:
kita bisa menggunakan
keepScreenOn
1.
implementation
menggunakansetKeepScreenOn() in java code
Docs http://developer.android.com/reference/android/view/View.html#setKeepScreenOn(boolean)
2. Menambah
keepScreenOn
kexml layout
Docs http://developer.android.com/reference/android/view/View.html#attr_android%3akeepScreenOn
Catatan (Beberapa Poin Berguna):
1. Tidak masalah yang
keepScreenOn
harus digunakan diMain/Root/Parent View
atasnya dapat digunakan dengan apa punchild view
akan berfungsi Seperti halnya bekerja diParent view
2. Satu-satunya masalah adalah bahwa
View's Visibility must be visible
jika tidak, itu tidak akan berhasil!sumber
v.setKeepScreenOn(true);
tampaknya menjadi satu-satunya cara untuk melakukannya untuk bingkai dialog layar penuhSolusi lain adalah menambahkan
android:keepScreenOn="true"
( dokumentasi ) ke tampilan yang perlu tetap mengaktifkan layar.Memungkinkan kontrol yang lebih terperinci dalam hal tampilan mana yang tetap aktif dan mana yang tidak. Anda bahkan dapat mereferensikan setelan dari file sumber daya dengan cara ini.
sumber