国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android監(jiān)聽Home鍵實例詳解

2020-04-11 10:48:48
字體:
供稿:網(wǎng)友

本文實例講述了Android監(jiān)聽Home鍵的方法。分享給大家供大家參考,具體如下:

將到android中Home鍵的監(jiān)聽,很多人第一反應(yīng)時重寫相應(yīng)Activity的onKeyDown()方法,監(jiān)聽當按下的鍵的keyCode為KEYCODE_HOME時,進行自己的相應(yīng)的處理。如:

@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {  if (keyCode == KeyEvent.KEYCODE_HOME) {    stopService(mIntentService);    return true;  }  return super.onKeyDown(keyCode, event);}

但是這樣的監(jiān)聽是不能監(jiān)聽到HOME鍵的。這樣的方法只能監(jiān)聽到BACK,MENU鍵。那么怎么監(jiān)聽Home鍵了?

1.新建一個監(jiān)聽Home鍵的Listener

public class HomeListener {  static final String TAG = "HomeListener";  private Context mContext;  private IntentFilter mFilter;  private OnHomePressedListener mListener;  private InnerRecevier mRecevier;  // 回調(diào)接口  public interface OnHomePressedListener {    public void onHomePressed();    public void onHomeLongPressed();  }  public HomeListener(Context context) {    mContext = context;    mFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);  }  /**   * 設(shè)置監(jiān)聽   *   * @param listener   */  public void setOnHomePressedListener(OnHomePressedListener listener) {    mListener = listener;    mRecevier = new InnerRecevier();  }  /**   * 開始監(jiān)聽,注冊廣播   */  public void startWatch() {    if (mRecevier != null) {      mContext.registerReceiver(mRecevier, mFilter);    }  }  /**   * 停止監(jiān)聽,注銷廣播   */  public void stopWatch() {    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();            } else if (reason                .equals(SYSTEM_DIALOG_REASON_RECENT_APPS)) {              // 長按home鍵              mListener.onHomeLongPressed();            }          }        }      }    }  }}

2.在使用的類的onCreate方法中注冊Home鍵的監(jiān)聽

/*** 注冊Home鍵的監(jiān)聽*/private void registerHomeListener() {    mHomeWatcher = new HomeListener(this);    mHomeWatcher.setOnHomePressedListener(new OnHomePressedListener() {      @Override      public void onHomePressed() {        //TODO 進行點擊Home鍵的處理        Log.i("xsl", "0000000000000");        stopService(mIntentService);      }      @Override      public void onHomeLongPressed() {        //TODO 進行長按Home鍵的處理        Log.i("xsl", "0000000000000");      }    });    mHomeWatcher.startWatch();}

3.在使用的類的onPause方法中停止監(jiān)聽

mHomeWatcher.stopWatch();

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android開發(fā)入門與進階教程》、《Android資源操作技巧匯總》、《Android視圖View技巧總結(jié)》及《Android控件用法總結(jié)

希望本文所述對大家Android程序設(shè)計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 山东| 福安市| 杂多县| 比如县| 莆田市| 法库县| 郸城县| 寻甸| 绥化市| 永嘉县| 宁都县| 洪湖市| 栖霞市| 罗源县| 正蓝旗| 新龙县| 大冶市| 阿坝| 新巴尔虎右旗| 昌吉市| 石河子市| 无锡市| 涿鹿县| 东乡族自治县| 乐东| 聊城市| 长沙县| 汝城县| 洞口县| 晋宁县| 平原县| 津市市| 马鞍山市| 始兴县| 景东| 九江县| 咸阳市| 阿荣旗| 永济市| 酉阳| 富民县|