这是我的情景。我有一个播放背景音乐的应用程序。使用BroadcastReceiver可以告诉我显示屏何时关闭,然后停止播放声音。我还可以知道屏幕何时重新点亮。但是,如果设备处于锁定状态,则不希望音频开始。因此,我等待ACTION_USER_PRESENT意图发出信号。所有这些都有效,除非用户在关闭屏幕后很快就重新打开它,您将无法获得锁定屏幕或ACTION_USER_PRESENT消息。那么,在屏幕重新打开时,是否有办法判断设备是否已锁定,也就是是否休眠?
这是我的情景。我有一个播放背景音乐的应用程序。使用BroadcastReceiver可以告诉我显示屏何时关闭,然后停止播放声音。我还可以知道屏幕何时重新点亮。但是,如果设备处于锁定状态,则不希望音频开始。因此,我等待ACTION_USER_PRESENT意图发出信号。所有这些都有效,除非用户在关闭屏幕后很快就重新打开它,您将无法获得锁定屏幕或ACTION_USER_PRESENT消息。那么,在屏幕重新打开时,是否有办法判断设备是否已锁定,也就是是否休眠?
((PowerManager) getSystemService(Context.POWER_SERVICE)).isScreenOn()
你可以尝试使用KeyguardManager来检查设备是否被锁定。这是一些代码(我自己还没有尝试过):
KeyguardManager kgMgr = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
boolean showing = kgMgr.inKeyguardRestrictedInputMode();
祝你好运!
KeyguardManager appKeyguard = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
PowerManager appPowerManager = (PowerManager) getSystemService(Context,POWER_SERVICE);
boolean showing = !appKeyguard.isKeyguardLocked() && appPowerManager.isInteractive();
((PowerManager) getSystemService(Context.POWER_SERVICE)).isScreenOn()
判断屏幕是否开启。如果屏幕开启但设备被锁定,则返回true。
inKeyguardRestrictedInputMode()
只有设备被锁定时才返回真。