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

Android监听Home键(通过广播)

2016-06-16 18:20 483 查看
代码如下:

/**
* 监听home键,必须在当前界面运行时注册,运行结束后反注册
*/
public class HomeKeyMonitor {

/**
* 参数
*/
private static final String SYSTEM_REASON = "reason";
private static final String SYSTEM_HOME_KEY = "homekey";
private static final String SYSTEM_HOME_RECENT_APPS = "recentapps";
private static final String SYSTEM_HOME_LOCK = "lock";
/**
* 监听home键的Receiver
*/
private BroadcastReceiver mHomeKeyReceiver = null;
/**
* Context
*/
private Context mContext = null;
/**
* OnHomeKeyListener
*/
private OnHomeKeyListener mOnHomeKeyListener = null;

/**
* @param context
* @param onHomeKeyListener 请用{@link DefaultOnHomeKeyListener}这个代替
*/
public HomeKeyMonitor(Context context, OnHomeKeyListener onHomeKeyListener) {
mContext = context;
mOnHomeKeyListener = onHomeKeyListener;
if (mHomeKeyReceiver == null) {
mHomeKeyReceiver = new BroadcastReceiver() {

@Override
public void onReceive(Context context, Intent intent) {
if (intent != null && intent.getAction().equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
String reason = intent.getStringExtra(SYSTEM_REASON);
if (!TextUtils.isEmpty(reason)) {
if (reason.equals(SYSTEM_HOME_KEY)) {
// home键
if (mOnHomeKeyListener != null) {
mOnHomeKeyListener.onHome();
}
} else if (reason.equals(SYSTEM_HOME_RECENT_APPS)) {
// 最近应用
if (mOnHomeKeyListener != null) {
mOnHomeKeyListener.onRecentApps();
}
} else if (reason.equals(SYSTEM_HOME_LOCK)) {
// 锁屏
if (mOnHomeKeyListener != null) {
mOnHomeKeyListener.onLock();
}
}
}
}
}
};
}
context.registerReceiver(mHomeKeyReceiver, new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
}

public void unregisterReceiver() {
if (mHomeKeyReceiver != null) {
mContext.unregisterReceiver(mHomeKeyReceiver);
mHomeKeyReceiver = null;
}
}
}


这里使用类继承且空实现的方式,之后使用时可以不用实现接口的每一个方法。

/**
* 监听Home键回调
*/
public interface OnHomeKeyListener {
public void onHome();
public void onRecentApps();
public void onLock();

/**
* 监听Home键回调
*/
public class DefaultOnHomeKeyListener implements OnHomeKeyListener {

@Override
public void onHome() {

}

@Override
public void onRecentApps() {

}

@Override
public void onLock() {

}
}
}


使用方式很简单:

private OnHomeKeyListener.DefaultOnHomeKeyListener mHomeKeyListener = new OnHomeKeyListener.DefaultOnHomeKeyListener() {
@Override
public void onHome() {
super.onHome();
//do some thing
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: