Я делаю приложение, где запуск активности запланирован AlarmManager. Я хотел бы появиться, даже если экран выключен, и устройство заблокировано.Android включить экран
для того чтобы достигнуть этого набора флаги окна
final Window win = getWindow();
win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
| WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON);
И попытаться получить блокировку для экрана
if(_lock == null)
{
PowerManager pm = (PowerManager)App.getAppContext()
.getSystemService(Context.POWER_SERVICE);
_lock = pm.newWakeLock(
PowerManager.FULL_WAKE_LOCK, "ScreenOn");
_lock.acquire();
}
_lock является PowerManager.WakeLock, который высвобождается в OnPause
protected void onPause()
{
if(_lock != null)
{
_lock.release();
}
}
Этот код выполнен в onCreate и onRestart. Все работает нормально, если активность еще не запущена.
Но если он был запущен ранее, экран не отключается.
- onRestart называется первым
- onResume тогда называется
- OnPause вызывается сразу
Так деятельность не запускается. Мой вопрос - как включить экран в такой ситуации. (Я использую API 15).
Опубликовать больше своего кода - все это. Что - где _lock? и вы, вероятно, имеете в виду «экран не выключен *** на ***» –
Итак, блокировка - это статический член _private? Вы уверены, что все работает нормально, если активность еще не запущена? Даже когда телефон alseep? Попытайтесь увеличить начальное время будильника - я уверен, что действие не будет работать. Когда я говорю больше кода, я имею в виду также Тревогу и приемник для тревоги - вы используете приемник для ararm no? И _again, вы, вероятно, имеете в виду, что «экран не поворачивается ** на **» _ –