2010-11-23 67 views
9

这是我的场景。我有一个应用程序正在播放背景声音。使用BroadcastReceiver我可以知道显示器什么时候关闭,然后杀掉声音。我还可以判断屏幕是否打开。但是,如果设备处于锁定状态,我不希望音频启动。因此我等待ACTION_USER_PRESENT意图发信号。这一切都是有效的,除了如果用户在关闭屏幕后很快重新启动屏幕,则不会获得锁定屏幕或ACTION_USER_PRESENT消息。那么,有没有办法告诉,当屏幕重新开启时,如果设备被锁定或者没有,我猜这也意味着睡眠或不是?如何判断设备是否正在睡觉

+0

如果设备实际处于睡眠状态,则应用程序处理器不执行代码。 屏幕锁定是完全不同的。 – 2010-11-23 20:58:36

+1

够公平的。那么如何判断屏幕是否被锁定? – iterator 2010-11-23 21:09:49

回答

9

您可以试试KeyguardManager来检查设备是否被锁定。这里有一些代码(我自己没有试过):

KeyguardManager kgMgr = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); 
boolean showing = kgMgr.inKeyguardRestrictedInputMode(); 

祝你好运!

12
((PowerManager) getSystemService(Context.POWER_SERVICE)).isScreenOn() 
0
((PowerManager) getSystemService(Context.POWER_SERVICE)).isScreenOn() 

告知用户,如果屏幕上。所以,如果屏幕开启但设备被锁定,则它变为真。 相反,

inKeyguardRestrictedInputMode() 

得到真正的只是如果设备被锁定。

相关问题