我有一个Android应用程序需要检测屏幕什么时候会锁定 是否有可能发现屏幕将保持“UnLocked”多长时间?
答案 0 :(得分:6)
您需要注册广播接收器。您的系统将在设备进入睡眠状态时发送广播。在需要的地方放置以下代码:
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中没有这样的监听器。我想到的解决方案是获取device time out from the settings,然后在您的应用中设置倒计时器。每次用户触摸屏幕时都应重置倒计时。通过这种方式,您可以猜测设备进入休眠状态的时间,然后在设备进入休眠状态之前设置唤醒锁并运行所需的代码,然后禁用唤醒锁并使设备进入休眠状态。
2.方法2:当您的设备进入睡眠状态时,会调用您的活动的inPause()方法。你可以在那里做一些代码。只是想一想。
答案 1 :(得分:1)
你必须使用" Wakelock" .. 试试这段代码
PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "whatever");wl.acquire();
不要忘记在你的清单中取得许可 " android.permission.WAKE_LOCK" 并在你的pouse()方法中写wl.release()..