2015-05-07 8 views
2

Мне нужно программно включать экран, когда пользователь выключается с помощью кнопки питания, и да, у меня всегда есть правильные флаги в Activity, чтобы держать экран включенным, но он не позволяет пользователю нажимать кнопку кнопка.Включите экран программно на Android

До сих пор я нашел решение, но он использует устаревшую wakelock

sWakeLock = sPM.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, TAG_WAKELOCK); 

sWakeLock.acquire(); 
sWakeLock.release(); 

Существует лучший способ добиться этого?

+0

Таким образом, пользователь дал четкий, однозначный сигнал о том, что они хотят экран выключен, но вы знаете лучше? Это звучит как ужасный пользовательский интерфейс. –

+1

Экран всегда должен быть включен, и я хочу предотвратить случайное нажатие кнопки питания в определенных ситуациях. – sherpya

ответ

9

В Lollipop вы можете добавить еще несколько флагов:

final Window win = getWindow(); 
    win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | 
      WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | 
      WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | 
      WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | 
      WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON); 

Я получил это от AOSP https://android.googlesource.com/platform/packages/apps/DeskClock/+/dfd1960/src/com/android/deskclock/alarms/AlarmActivity.java

+0

Это сработало для меня, спасибо :) – LeonardoSibela

+1

Рад помочь! И жадный мне - пожалуйста, отметьте мой ответ как правильный? Благодаря! – rubmz

+2

Я не тот, кто задал вопрос. Я только видел, как это сработало, проголосовали и сказали спасибо – LeonardoSibela

 Смежные вопросы

  • Нет связанных вопросов^_^