正如前一个问题所述,如果没有长期android.intent.action.SCREEN_ON
(不鼓励),我很难拦截所有Service
事件。
我可能能够解决这个问题,如果我可以在Service
的任何给定时间点亮屏幕。
任何人都可以建议一个会返回此信息的方法调用吗? 1.5以上。
答案 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_ON
和ACTION_SCREEN_OFF
广播,因为我们非常不希望启动一堆应用来打开屏幕或关闭。这是一直发生的事情,必须尽可能快。
不幸的是,正如所指出的那样,没有办法立即检查屏幕是否打开。