问题描述
|
在我的应用程序中,我需要知道设备何时被锁定(在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
}