【问题标题】:Distinguish between screen timeout and power-button-press?区分屏幕超时和电源按钮按下?
【发布时间】:2010-05-04 19:14:58
【问题描述】:

我的应用程序在屏幕变黑时会执行某些操作,但我希望它仅在屏幕“自行”关闭时通过屏幕超时执行该任务 - 而不是在用户按下电源按钮时执行该任务。有什么方法可以区分这两个事件吗?

ACTION_SCREEN_OFF 显然在这两种情况下都会触发,而且我还没有发现任何其他可能与我正在寻找的意图相匹配的意图。

【问题讨论】:

  • 你想做什么?可能还有其他动作要监听。
  • 我正在尝试在屏幕超时时执行一个简单的计算,而不是当用户按下电源按钮以“强制”关闭屏幕时。 “超时” - 动作会很棒,但我还没有找到类似的东西。是否可以查询锁屏是否打开(我相信这通常只在您按下电源按钮时才会发生,至少在 N1 上)?
  • 为什么你只想在那种情况下这样做?如果您解释 whatwhy,也许有人可以建议您更好的解决方案。
  • 谢谢,Warpzit,我去看看!

标签: android android-intent


【解决方案1】:

在较低级别发生屏幕超时时发生的事件,使用“adb logcat”查看,您会看到它,从那里挖掘。

【讨论】:

  • 感谢您的回答。我看到了,但认为由于它不是公共广播,所以我无法收听,但是如果您说理论上可行,我敢肯定我会在谷歌上找到一些东西(尽管不是用普通方法, 我猜)。谢谢!
【解决方案2】:

服务不能直接处理按钮事件。也许你可以让你的 Activity 注册一个广播接收器,以便在屏幕关闭时得到通知,然后让 Activity 检查最后按下的键是否是电源按钮——如果不是,那么你可以发送一个广播到你的服务并让它运行你想要的任何东西。

【讨论】:

    【解决方案3】:

    这是一个有趣的问题 :) 虽然不准确,但您可以尝试采样自用户上次触摸事件以来的时间以及您的活动暂停的时间 - 看看它是否适合 screen off timeout

    【讨论】:

      【解决方案4】:

      你能监听 KEYCODE_POWER 键盘事件吗?这可能会做你想要的。 (但可能无法保证 that 和 ACTION_SCREEN_OFF 到达的顺序)。

      【讨论】:

      • 您好,感谢您的回答!这是个好主意,虽然我只是尝试过但它不起作用,但似乎无法捕捉到该键码:groups.google.com/group/android-developers/browse_thread/thread/… 另外,我需要在系统范围内注册该键事件,因为我正在使用一项服务,我认为这也是不可能的:-/ 但是感谢您的帮助,这是个好主意,如果它有效,那就太完美了:-)!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-04
      • 1970-01-01
      • 2013-09-29
      • 2013-08-19
      相关资源
      最近更新 更多