Android включи экранAndroid

Форум для тех, кто программирует под Android
Anonymous
Android включи экран

Сообщение Anonymous »

Я делаю приложение, в котором запуск активности запланирован с помощью AlarmManager. Я хотел бы появляться, даже если экран выключен и устройство заблокировано.

Чтобы добиться этого, установите флаги окна

Код: Выделить всё

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).

Вернуться в «Android»