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 } };
相关文章推荐
- [Android官方Demo系列] PageTransformer缩放滑动
- Android从ftp服务器获取文件
- Android的Fragment的生命周期各状态和回调函数使用
- android 抛出Error:Execution failed for task .....
- android studio 生成aar包并在其他工程引用 (导入)aar包
- Android USER 版本与ENG 版本的差异--MTK官方解释
- android 计算器(GridView实现)
- Android动态变化颜色的牛逼方法
- Android Camera 调用流程
- android中的spannable的使用
- 数据库中的增删改查、以及sql语句在android中的使用注意事项、保存头像到本地方法
- 自定义侧滑组件+自定义属性
- Android studio 上SVN的使用和配置
- android 中 Drawable 和 ConstantState 的一些认识
- 利用Android回调机制对Dialog进行简单封装
- AndroidStudio常见错误
- Android 自定义View——View 基础知识
- Android Studio 1.5 注解配置
- Android开发 时间戳转换工具类
- 【Android】不弹root请求框检测手机是否root