如何检测屏幕何时开启?

时间:2010-04-04 19:47:32

标签: android

正如前一个问题所述,如果没有长期android.intent.action.SCREEN_ON(不鼓励),我很难拦截所有Service事件。

我可能能够解决这个问题,如果我可以在Service的任何给定时间点亮屏幕。

任何人都可以建议一个会返回此信息的方法调用吗? 1.5以上。

4 个答案:

答案 0 :(得分:5)

PowerManager.isScreenOn() 自:API Level 7

答案 1 :(得分:3)

ACTION_USER_PRESENT意图的系统广播是否有任何帮助?

答案 2 :(得分:3)

如果您的代码正在运行,屏幕很可能会启动。主要的例外是如果您的代码是通过AlarmManager唤醒的。

如果ACTION_SCREEN_ON是一个粘性广播,那会很好,但情况似乎并非如此。

如果您可以使用Android 2.1及更高版本,PowerManager现在有isScreenOn()方法。好消息是,这是可用的。坏消息是,由于它是在那里添加的,因此不太可能有任何其他方法可以轻易确定它。而且,对源代码的快速检查并没有太多希望您可能会破解早期SDK中的信息。

答案 3 :(得分:1)

系统故意不允许应用程序在其清单中接收ACTION_SCREEN_ONACTION_SCREEN_OFF广播,因为我们非常不希望启动一堆应用来打开屏幕或关闭。这是一直发生的事情,必须尽可能快。

不幸的是,正如所指出的那样,没有办法立即检查屏幕是否打开。