您的位置:首页 > 移动开发 > Android开发

android Home键监听封装

2015-04-15 14:10 232 查看
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 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();

}

}

}

}

}

}

}

实用范例:

HomeWatcher homeWatcher = new HomeWatcher(this);

homeWatcher.setOnHomePressedListener(new OnHomePressedListener()

{

@Override

public void onHomePressed()

{

ActivityManager.getInstance().exitAll();

}

@Override

public void onHomeLongPressed()

{

ActivityManager.getInstance().exitAll();

}

});

homeWatcher.startWatch();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: