Android監(jiān)聽(tīng)Home鍵實(shí)例詳解
本文實(shí)例講述了Android監(jiān)聽(tīng)Home鍵的方法。分享給大家供大家參考,具體如下:
將到android中Home鍵的監(jiān)聽(tīng),很多人第一反應(yīng)時(shí)重寫相應(yīng)Activity的onKeyDown()方法,監(jiān)聽(tīng)當(dāng)按下的鍵的keyCode為KEYCODE_HOME時(shí),進(jìn)行自己的相應(yīng)的處理。如:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_HOME) {
stopService(mIntentService);
return true;
}
return super.onKeyDown(keyCode, event);
}
但是這樣的監(jiān)聽(tīng)是不能監(jiān)聽(tīng)到HOME鍵的。這樣的方法只能監(jiān)聽(tīng)到BACK,MENU鍵。那么怎么監(jiān)聽(tīng)Home鍵了?
1.新建一個(gè)監(jiān)聽(tīng)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)聽(tīng)
*
* @param listener
*/
public void setOnHomePressedListener(OnHomePressedListener listener) {
mListener = listener;
mRecevier = new InnerRecevier();
}
/**
* 開始監(jiān)聽(tīng),注冊(cè)廣播
*/
public void startWatch() {
if (mRecevier != null) {
mContext.registerReceiver(mRecevier, mFilter);
}
}
/**
* 停止監(jiān)聽(tīng),注銷廣播
*/
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)) {
// 長(zhǎng)按home鍵
mListener.onHomeLongPressed();
}
}
}
}
}
}
}
2.在使用的類的onCreate方法中注冊(cè)Home鍵的監(jiān)聽(tīng)
/**
* 注冊(cè)Home鍵的監(jiān)聽(tīng)
*/
private void registerHomeListener() {
mHomeWatcher = new HomeListener(this);
mHomeWatcher.setOnHomePressedListener(new OnHomePressedListener() {
@Override
public void onHomePressed() {
//TODO 進(jìn)行點(diǎn)擊Home鍵的處理
Log.i("xsl", "0000000000000");
stopService(mIntentService);
}
@Override
public void onHomeLongPressed() {
//TODO 進(jìn)行長(zhǎng)按Home鍵的處理
Log.i("xsl", "0000000000000");
}
});
mHomeWatcher.startWatch();
}
3.在使用的類的onPause方法中停止監(jiān)聽(tīng)
mHomeWatcher.stopWatch();
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android開發(fā)入門與進(jìn)階教程》、《Android資源操作技巧匯總》、《Android視圖View技巧總結(jié)》及《Android控件用法總結(jié)》
希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。
相關(guān)文章
Android中的廣播(BroadCast)詳細(xì)介紹
這篇文章主要介紹了Android中的廣播(BroadCast)詳細(xì)介紹,本文講解了什么是廣播、廣播有什么用、實(shí)現(xiàn)廣播、動(dòng)態(tài)注冊(cè)方式、配置文件方式等內(nèi)容,需要的朋友可以參考下2015-03-03
Android簡(jiǎn)單的利用MediaRecorder進(jìn)行錄音的實(shí)例代碼
MediaRecorder可以進(jìn)行簡(jiǎn)單的錄音,由于操作簡(jiǎn)單所以可以用來(lái)進(jìn)行基本的錄音。下面提供一個(gè)簡(jiǎn)單的例子,記得在Mainfest文件中添加權(quán)限2013-08-08
Android中RecyclerView實(shí)現(xiàn)滑動(dòng)刪除與拖拽功能
這篇文章主要使用了RecyclerView的ItemTouchHelper類實(shí)現(xiàn)了Item的拖動(dòng)和刪除功能,ItemTouchHelper是v7包下的一個(gè)類,下面來(lái)看看詳細(xì)的介紹吧,需要的朋友可以參考學(xué)習(xí)。2017-02-02
Android實(shí)現(xiàn)多個(gè)連續(xù)帶數(shù)字圓圈效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)多個(gè)連續(xù)帶數(shù)字圓圈效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
Android NDK 開發(fā)中 SO 包大小壓縮方法詳解
這篇文章主要為為大家介紹了Android NDK 開發(fā)中 SO 包大小壓縮方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
Android 實(shí)現(xiàn)閃屏頁(yè)和右上角的倒計(jì)時(shí)跳轉(zhuǎn)實(shí)例代碼
本文給大家分享一段實(shí)例代碼給大家介紹android實(shí)現(xiàn)閃屏頁(yè)和右上角的倒計(jì)時(shí)跳轉(zhuǎn)實(shí)例代碼,閃屏頁(yè)用到了handler和CountDownTimer類,還需配置一下Activity的主題,感興趣的朋友參考下吧2016-02-02
Android開發(fā)中使用Intent打開第三方應(yīng)用及驗(yàn)證可用性的方法詳解
這篇文章主要介紹了Android開發(fā)中使用Intent打開第三方應(yīng)用及驗(yàn)證可用性的方法,結(jié)合實(shí)例形式分析了Android使用Intent打開第三方應(yīng)用的三種常用方式及使用注意事項(xiàng),需要的朋友可以參考下2017-11-11

