【发布时间】:2011-05-31 10:57:05
【问题描述】:
在我的应用程序中,我需要知道设备何时被锁定(在 HTC 上,它看起来像短按“电源”按钮)。所以问题是:当设备被锁定时会触发哪个事件?或者设备要休眠了?
【问题讨论】:
在我的应用程序中,我需要知道设备何时被锁定(在 HTC 上,它看起来像短按“电源”按钮)。所以问题是:当设备被锁定时会触发哪个事件?或者设备要休眠了?
【问题讨论】:
你应该扩展BroadcastReceiver并实现onReceive,像这样:
public class YourBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_SCREEN_OFF.equalsIgnoreCase(intent.getAction())) {
//screen has been switched off!
}
}
}
然后你只需要注册它,你就会在屏幕关闭时开始接收事件:
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
appBroadcastReceiver = new AppBroadcastReceiver(yourActivity);
registerReceiver(appBroadcastReceiver, filter);
【讨论】:
有更好的办法:
KeyguardManager myKM = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
if( myKM.inKeyguardRestrictedInputMode()) {
//it is locked
} else {
//it is not locked
}
【讨论】:
除了上述答案之外,如果您想在您的应用位于前台时触发某些操作:
您可以使用名为 onResume() 的事件来触发您自己的函数,当您的应用从之前的静止状态(即,如果您的应用处于后台(暂停/最小化。 ..)
protected void onResume()
{
super.onResume();
//call user-defined function here
}
【讨论】: