Я написал простое приложение в стиле будильника, которое запускаю на своем (джейлбрейкнутом) Nook Simple Touch (он же NST) под Android 2.1.
Когда наступает запланированное время будильника, моему приложению необходимо активировать NST и отобразить страницу содержимого HTML. Я использую AlarmManager, чтобы получить обратный вызов в нужное время, и, похоже, он работает как ожидалось - почти.
Проблема возникает, когда прошло достаточно времени простоя, когда NST активировал свой режим блокировки экрана (то есть он автоматически отображает карикатуру известного автора). Я не могу найти программный способ закрыть экран блокировки, чтобы мой HTML-контент был виден. Я вижу, что моя подпрограмма обратного вызова по сигналу была запущена в ожидаемое время (через представление LogCat в Eclipse, после того, как я повторно подключился к NST с помощью adb), и после того, как я вручную «перетащил, чтобы разблокировать» пальцем, я вижу, что мое приложение окно обновлено, как и ожидалось, но мне нужно, чтобы текст стал видимым, когда происходит событие тревоги, а не только после того, как пользователь разблокирует устройство. Я пробовал код, показанный ниже (на основе других ответов StackOverflow), но это не помогает.
Есть идеи, как это сделать? (Одно из технических решений, которое работает технически, - это постоянно устанавливать FLAG_KEEP_SCREEN_ON в моем окне, чтобы экран знаменитого автора-блокировки никогда не появлялся на первом месте, но это не дает NST проснуться и, следовательно, довольно быстро разряжает батарею. поэтому я хочу избежать этого, если это возможно)
private void wakeUpTheScreen()
{
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);
}