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