我有一个android应用程序,需要检测屏幕何时锁定。
是否有可能发现屏幕将保持“解锁”状态多长时间?
您将需要注册一个广播接收者。当设备进入睡眠状态时,您的系统将发送广播。将以下代码放在任何需要的地方:
private BroadcastReceiver receiver = new BroadcastReceiver() {
public void onReceive(final Context context, final Intent intent) {
//check if the broadcast is our desired one
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF))
//here define your method to be executed when screen is going to sleep
}};
您将需要注册您的接收者:
IntentFilter regFilter = new IntentFilter();
// get device sleep evernt
regFilter .addAction(Intent.ACTION_SCREEN_OFF);
registerReceiver(receiver, regFilter );
ACTION_SCREEN_OFF屏幕关闭,但在发送ACTION_SCREEN_ON在屏幕转弯后发送。
更新:
1.方法1:据我所知,您无法在设备进入睡眠状态之前设置侦听器.PowerManager中没有此类侦听器。我想到的一个解决方案是从设置中获取设备超时,然后在您的应用中设置倒数计时器。每次用户触摸屏幕时,都应重置倒数计时。这样,您可以猜测设备进入睡眠状态的时间,然后在设备进入睡眠状态并运行所需的代码之前设置唤醒锁,然后禁用唤醒锁并使设备进入睡眠状态。
2.方法2:当设备进入睡眠状态时,将调用活动的inPause()方法。您可能可以在那里做一些代码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句