版权声明:转载请注明出处。 https://blog.csdn.net/rentee/article/details/51693856
代码如下:
/**
* 监听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
}
};