项目用到了,记录下,返回键什么的物理按键使用onKeyDown监听就可以了,但是锁屏键、Home键不可以,这里使用广播监听两者状态变化
IntentFilter片段:
mFilter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);//home键
mFilter.addAction(Intent.ACTION_SCREEN_ON); //开屏
mFilter.addAction(Intent.ACTION_SCREEN_OFF);//锁屏
mFilter.addAction(Intent.ACTION_USER_PRESENT);//解锁
onRecevier片段:
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY);
if (reason != null) {
if (mListener != null) {
if (reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)) {
// 短按home键
mListener.onHomePressed();
} else if (reason
.equals(SYSTEM_DIALOG_REASON_RECENT_APPS)) {
// 长按home键
mListener.onHomeLongPressed();
}
}
}
}
if(action.equals(Intent.ACTION_SCREEN_ON)){
mListener.onScreenOn();
}else if(action.equals(Intent.ACTION_SCREEN_OFF)){
mListener.onScreenOff();
} else{// 解锁
//TODO
}
最后提醒下,对于锁屏操作,由于先走的activity的onPause,onStop,所以不可以像以往反注册广播样在onPause里进行反注册,否则的话会接收不到锁屏操作