是否有可能编写一个Android广播接收器来检测手机什么时候醒来?

时间:2010-04-05 07:17:43

标签: android broadcastreceiver

我想知道如何检测手机何时从黑屏模式中醒来并为该事件编写处理程序。那可能吗?这似乎是广播接收器应该处理的事情?或者有更好或更正确的方式吗?

3 个答案:

答案 0 :(得分:3)

如果您的服务处于活动状态,则可以使用

捕获这些事件
registerReceiver(new BroadcastReceiver() {

  @Override
  public void onReceive(Context context, Intent intent) {
    // do something
  }
}, new IntentFilter(Intent.ACTION_SCREEN_ON));

然而,这依赖于我最近学到的永久运行服务,因为它很脆弱(操作系统喜欢关闭它们)并永久使用资源。

令人失望的是,您的清单中的接收器似乎无法拦截SCREEN_ON事件。

最近出现了这个问题:

android.intent.action.SCREEN_ON doesn't work as a receiver intent filter

Android - how to receive broadcast intents ACTION_SCREEN_ON/OFF?

答案 1 :(得分:3)

您还可以使用广播接收器捕获用户解锁设备时的USER_PRESENT广播意图。当然,某些版本的Honeycomb并不尊重这一点,但对于所有非脑死亡版本的Android(2.x和4.x),它的效果都很好。

答案 2 :(得分:0)

你在广播接收器上是对的。您可以收听SCREEN_ON和SCREEN_OFF广播事件。