項目用到了,記錄下,返回鍵什么的物理按鍵使用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里進行反注冊,否則的話會接收不到鎖屏操作
