我的活动使用部分唤醒锁定运行,因为它不断处理接收到的蓝牙数据。唤醒锁的设置如下:
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();
我在这里缺少什么吗?我不是试图打开一个新的活动,而只是向用户显示我当前的活动。有没有其他人能够做到这一点?感谢你给与我的帮助。