监听HOME键
来源:互联网 发布:服装设计软件手机版 编辑:程序博客网 时间:2024/05/22 15:54
监听HOME键
2012-10-11 14:36 1207人阅读 评论(2) 收藏 举报
dialogsystemstringactionnullclass
刚开始,因为监听手机的back键是有一个简单判断方法,所以第一反应觉得home应该也一样,if (keyCode == KeyEvent.KEYCODE_HOME && event.getRepeatCount() == 0){// do sth}。但测试下来发现home键可不是那么回事儿,监听不到。网友说这个和SDK有关系。那有没有不依赖sdk的方法呢。这个是可以有滴。自己写两个监听类,然后在Activity中注册以下home的监听广播。DEMO如下:
一、定义接口OnHomePressedListener。抽象方法是home被按下后的回调方法
- package country.company.project.util;
- public interface OnHomePressedListener {
- public void onHomePressed();
- public void onHomeLongPressed();
- }
二、定义监听类HomeWatcher。
- package country.company.project.util;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- import android.content.IntentFilter;
- import android.util.Log;
- public class HomeWatcher {
- static final String TAG = "hg";
- private Context mContext;
- private IntentFilter mFilter;
- private OnHomePressedListener mListener;
- private InnerRecevier mRecevier;
- public HomeWatcher(Context context) {
- mContext = context;
- mFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
- }
- 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();
- }
- }
- }
- }
- }
- }
- }
三、在Activity的onCreate()或者其它你需要的地方注册监听器
- package country.company.project.util;
- import android.app.Activity;
- import android.os.Bundle;
- import android.util.Log;
- import country.company.project.util.R;
- public class HomeWatcherActivity extends Activity {
- private final String TAG = "hg";
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.about);
- HomeWatcher mHomeWatcher = new HomeWatcher(this);
- mHomeWatcher.setOnHomePressedListener(new OnHomePressedListener() {
- @Override
- public void onHomePressed() {
- Log.e(TAG, "onHomePressed");
- }
- @Override
- public void onHomeLongPressed() {
- Log.e(TAG, "onHomeLongPressed");
- }
- });
- mHomeWatcher.startWatch();
- }
- }
各种版本SDK实测OK!
0 0
- home键监听
- home键监听
- 监听home键
- home键监听
- home键监听
- android监听home键
- android 监听HOME键
- 监听HOME键
- 监听home键
- Android 监听Home键
- 监听HOME键
- android Home键监听
- Android 监听Home键
- Android 监听home键
- android HOME键监听
- home键的监听
- android home键监听
- Android Home键监听
- 报表 显示 23.5%
- php---whois查询
- Perception Neuron系统,让动作捕捉技术不再高冷
- struts1和struts2区别
- docker 实战---多台物理主机的联网,容器桥接到物理网络拓扑图(四)
- 监听HOME键
- 做单片机的翻棋子游戏时的答案程序
- EBSR12 发票关联凭证
- 文本处理命令总结
- Natural Language Processing With Python (2)
- IOS 版本控制versions的使用
- SOAP python
- Binary Tree Level Order Traversal
- 【学习笔记】object2byte,byte2object