Моя активность выполняется с частичной блокировкой пробуждения, поскольку она постоянно обрабатывает полученные данные Bluetooth. Блокировка пробуждения настроена следующим образом:
powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
wakeLock.acquire();
Когда происходят определенные события, я хочу отображать их на дисплее, чтобы пользователь мог просматривать их состояние. Я хочу, чтобы дисплей включался автоматически, а не нажатием клавиши пользователем. Однако все попытки сделать это провалились. Когда дисплей выключается во время работы с частичной блокировкой пробуждения, мои попытки вернуть дисплей обратно и позволить пользователю увидеть текущую активность не увенчались успехом. Я пытался имитировать активность пользователя:
PowerManager NewPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
NewPowerManager.userActivity(1, false);
Установка флагов для окна:
Window win = getWindow();
win.setFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON, WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
И даже снятие блокировки пробуждения и запуск другой, которая должна включать экран:
if (wakeLock != null)
{
wakeLock.release(); // release the wakelock
}
PowerManager.WakeLock TempWakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK |
PowerManager.ACQUIRE_CAUSES_WAKEUP, "TempWakeLock");
// tried | PowerManager.ON_AFTER_RELEASE to no avail
TempWakeLock.acquire();
Есть ли что-то, чего я здесь не упускаю? Я не пытаюсь открыть новую активность, а просто показываю пользователю свою текущую. Кто-нибудь еще смог это сделать? Спасибо за любую помощь, которую вы можете мне дать.