gpt4 book ai didi

android - 如何在部分唤醒锁定期间打开屏幕

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:25:58 25 4
gpt4 key购买 nike

我的 Activity 使用部分唤醒锁运行,因为它不断处理接收到的蓝牙数据。唤醒锁设置如下:

  powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
wakeLock.acquire();

当某些事件发生时,我想在显示器上显示,以便用户可以查看状态。我希望显示器自动打开,而不是通过用户按键。然而,所有这样做的尝试都失败了。当显示屏在使用部分唤醒锁定运行时关闭时,我试图将显示屏转回原位并让用户看到当前 Activity 的尝试失败了。我试过伪造用户 Activity :

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();

我在这里缺少什么吗?我并不是想打开一个新的 Activity ,而只是向用户展示我当前的 Activity 。有没有其他人能够做到这一点?感谢您能给我的任何帮助。

最佳答案

在看到 HTC 的 Lance 的一些演示代码后,我终于能够解决这个问题(顺便感谢)。

秘诀似乎是通过设置 ACQUIRE_CAUSES_WAKEUP 创建一个额外的完全唤醒锁。我没有释放原来的部分唤醒锁,但是当我想打开显示器时,我创建了新的完全唤醒锁,做我的事情,然后释放新的完全唤醒锁。这确实有效!

PowerManager TempPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock TempWakeLock = TempPowerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP |
PowerManager.ON_AFTER_RELEASE, "TempWakeLock");
TempWakeLock.acquire();

// do the work that needs the visible display...

// Release the newest wakelock and fall back to the old one
TempWakeLock.release();

关于android - 如何在部分唤醒锁定期间打开屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10352911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com