【问题标题】:How to programmatically dismiss the screensaver/lock screen on Android (Nook Simple Touch)如何以编程方式关闭 Android 上的屏幕保护程序/锁定屏幕(Nook Simple Touch)
【发布时间】:2014-12-28 02:05:26
【问题描述】:

我编写了一个简单的闹钟式应用程序,我在 Android 2.1 下的(越狱)Nook Simple Touch(又名 NST)上运行。

当预定的闹钟时间到达时,我的应用程序需要唤醒 NST 并显示一页 HTML 内容。我使用 AlarmManager 在正确的时间获得回调,它似乎按预期工作 - 几乎。

当 NST 激活其锁屏模式(即它正在自动显示著名作者的漫画)时,会出现足够的空闲时间。我找不到以编程方式关闭锁屏以使我的 HTML 内容可见的方法。我可以看到我的警报回调例程在预期时间运行(通过 Eclipse 中的 LogCat 视图,在我使用 adb 重新连接到 NST 之后),并且在我用手指手动“拖动解锁”之后,我可以看到我的应用程序的窗口按预期更新,但我需要在警报事件发生时让文本可见,而不仅仅是在用户解锁设备之后。我尝试了下面显示的代码(基于其他 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);
}

【问题讨论】:

    标签: android screensaver nook


    【解决方案1】:

    哈,我发现(在previous StackOverflow answers 的更多帮助下)我做错了什么。

    问题如上述链接所述——AlarmManager 按预期调用了我的 BroadcastReceiver,然后我的 BroadcastReceiver 将向我的 AlarmHandler 发送消息()(如我正在抄袭的警报示例所示)。但是在 onReceive() 返回后,Nook 会立即进入睡眠状态,这意味着辅助处理程序永远不会被调用,因此我的 wakeUpTheScreen() 方法没有被执行。

    我移动了 wakeUpTheScreen() 调用,以便现在直接从 onReceived() 方法调用它,现在唤醒按预期工作。 :^)

    【讨论】:

    • 很好的提示,对我来说,在活动的 onResume 下放置标志时它起作用了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    相关资源
    最近更新 更多