Home点击监听及示例

来源:互联网 发布:元数据管理工具 编辑:程序博客网 时间:2024/06/05 17:01
/**  * Home键监听封装  */
 public class HomeWatcher{      static final String TAG = "HomeWatcher";      private Context mContext;      private IntentFilter mFilter;      private OnHomePressedListener mListener;      private InnerRecevier mRecevier;          // 回调接口          public interface OnHomePressedListener{          public void onHomePressed();   //点击        public void onHomeLongPressed();  //长按    }      public HomeWatcher(Context context){          mContext = context;          mFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);    }      /**      * 设置监听       * @param listener      * /    public void setOnHomePressedListener(OnHomePressedListener listener){          mListener = listener;          mRecevier = new InnerRecevier();      }      /**      * 开始监听,注册广播      */     public void startWatch(){          if (mRecevier != null) {              mContext.registerReceiver(mRecevier, mFilter);          }      }      /**      * 停止监听,注销广播      */     public voids topWatch(){          if (mRecevier != null) {              mContext.unregisterReceiver(mRecevier);          }      }       class InnerRecevier extends BroadcastReceiver{          final String SYSTEM_DIALOG_REASON_KEY = "reason";          final String SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS = "globalactions";          final String SYSTEM_DIALOG_REASON_RECENT_APPS = "recentapps";          final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey";          @Override        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) {                      Log.e(TAG, "action:" + action + ",reason:" + reason);                      if (mListener != null) {                          if (reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)) {                              // 短按home键                              mListener.onHomePressed();                          } elseif (reason                                  .equals(SYSTEM_DIALOG_REASON_RECENT_APPS)) {                              // 长按home键                              mListener.onHomeLongPressed();                          }                      }                  }              }          }      }  }
使用方式:
public class MainActivity extends Activity{      private static final String TAG = "MainActivity";      private HomeWatcher mHomeWatcher;      @Override    protected void onCreate(Bundle savedInstanceState){          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_main);          mHomeWatcher = new HomeWatcher(this);          mHomeWatcher.setOnHomePressedListener(new OnHomePressedListener() {              @Override            public void onHomePressed(){                  Log.e(TAG, "onHomePressed");  //这个点击不一定每次都有,有的时候有,有的时候没有            }              @Override             public void onHomeLongPressed(){                  Log.e(TAG, "onHomeLongPressed");              }          });          mHomeWatcher.startWatch();      }      @Override        protected void onPause(){          super.onPause();          mHomeWatcher.stopWatch();// 在onPause中停止监听,不然会报错的。      }  }
0 0