Android Home键按键事件监听
来源:互联网 发布:stc单片机的J什么意思 编辑:程序博客网 时间:2024/05/16 00:59
平时用的比较多的是Back键按键的监听,但是后来修改相机问题时遇到了需要监听Home键的情况,遂各种搜索资料,get到如下技能:
Home键的监听也需要注册广播接收器(采用动态注册的方式),通过拦截让窗口关闭的系统动作,然后根据Intent里面的具体参数来判断是否为Home键点击事件。
接收器代码:
import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;public class HomeWatcherReceiver extends BroadcastReceiver { private static final String LOG_TAG = "HomeReceiver"; private static final String SYSTEM_DIALOG_REASON_KEY = "reason"; private static final String SYSTEM_DIALOG_REASON_RECENT_APPS = "recentapps"; private static final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey"; private static final String SYSTEM_DIALOG_REASON_LOCK = "lock"; private static final String SYSTEM_DIALOG_REASON_ASSIST = "assist"; @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); Log.i(LOG_TAG, "onReceive: action: " + action); if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) { // android.intent.action.CLOSE_SYSTEM_DIALOGS String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY); Log.i(LOG_TAG, "reason: " + reason); if (SYSTEM_DIALOG_REASON_HOME_KEY.equals(reason)) { // 短按Home键 Log.i(LOG_TAG, "homekey"); } else if (SYSTEM_DIALOG_REASON_RECENT_APPS.equals(reason)) { // 长按Home键 或者 activity切换键 Log.i(LOG_TAG, "long press home key or activity switch"); } else if (SYSTEM_DIALOG_REASON_LOCK.equals(reason)) { // 锁屏 Log.i(LOG_TAG, "lock"); } else if (SYSTEM_DIALOG_REASON_ASSIST.equals(reason)) { // 长按Home键 Log.i(LOG_TAG, "assist"); } } }}
动态注册代码:
private static HomeWatcherReceiver mHomeKeyReceiver = null; private static void registerHomeKeyReceiver(Context context) { Log.i(LOG_TAG, "registerHomeKeyReceiver"); mHomeKeyReceiver = new HomeWatcherReceiver(); final IntentFilter homeFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); context.registerReceiver(mHomeKeyReceiver, homeFilter); } private static void unregisterHomeKeyReceiver(Context context) { Log.i(LOG_TAG, "unregisterHomeKeyReceiver"); if (null != mHomeKeyReceiver) { context.unregisterReceiver(mHomeKeyReceiver); } }
在Activity的onPause()和onResume()里面分别调用:
@Override protected void onResume() { super.onResume(); registerHomeKeyReceiver(this); } @Override protected void onPause() { unregisterHomeKeyReceiver(this); super.onPause(); }
参考地址:http://www.cnblogs.com/mengdd/p/3951223.html
0 0
- Android Home键按键事件监听
- Android 监听Home键按键事件
- 监听android home按键
- Android监听HOME按键
- Android监听HOME按键
- Android监听HOME按键
- Android监听HOME按键
- android home按键监听
- Android home键监听事件。
- Android通过Intent.ACTION_CLOSE_SYSTEM_DIALOGS监听Home按键事件
- Android 监听Back、Home按键
- Android监听Home按键消息
- android按键监听事件
- Android监听耳机按键事件
- Android监听耳机按键事件
- 如何监听home按键
- 监听HOME按键
- 如何监听home按键
- ETL
- 织梦DedeCMS模板通用安装方法
- Android——实现像handcent sms或者chomp sms那样的气泡短信样式
- 【BZOJ2600】【IOI2011】ricehub 二分答案
- c语言可变参数列表处理
- Android Home键按键事件监听
- 在VC中调用WORD(显示,修改,存盘,运行宏)
- 比较iOS类别Category和扩展Extension以及runtime的associative(关联)机制(容我水一发)
- win7系统
- MySQL修改root密码的多种方法
- sqlite数据库查询结果过大解决办法
- \r和\n的区别
- java编程思想总结1
- VMware安装mac OS_X_10.7