android的Home键的监听封装工具类(一)

android的Home键的监听封装:

 1 package com.gzcivil.utils;
 2
 3 import android.content.BroadcastReceiver;
 4 import android.content.Context;
 5 import android.content.Intent;
 6 import android.content.IntentFilter;
 7
 8 /**
 9  * Home键监听封装
10  *
11  */
12 public class HomeListener {
13
14     static final String TAG = "HomeListener";
15     private Context mContext;
16     private IntentFilter mFilter;
17     private OnHomePressedListener mListener;
18     private InnerRecevier mRecevier;
19
20     // 回调接口
21     public interface OnHomePressedListener {
22         public void onHomePressed();
23         public void onHomeLongPressed();
24     }
25
26     public HomeListener(Context context) {
27         mContext = context;
28         mFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
29     }
30
31     /**
32      * 设置监听
33      *
34      * @param listener
35      */
36     public void setOnHomePressedListener(OnHomePressedListener listener) {
37         mListener = listener;
38         mRecevier = new InnerRecevier();
39     }
40
41     /**
42      * 开始监听,注册广播
43      */
44     public void startWatch() {
45         if (mRecevier != null) {
46             mContext.registerReceiver(mRecevier, mFilter);
47         }
48     }
49
50     /**
51      * 停止监听,注销广播
52      */
53     public void stopWatch() {
54         if (mRecevier != null) {
55             mContext.unregisterReceiver(mRecevier);
56         }
57     }
58
59     /**
60      * 广播接收者
61      */
62     class InnerRecevier extends BroadcastReceiver {
63         final String SYSTEM_DIALOG_REASON_KEY = "reason";
64         final String SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS = "globalactions";
65         final String SYSTEM_DIALOG_REASON_RECENT_APPS = "recentapps";
66         final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey";
67
68         @Override
69         public void onReceive(Context context, Intent intent) {
70             String action = intent.getAction();
71             if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
72                 String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY);
73                 if (reason != null) {
74                     // Log.e(TAG, "action:" + action + ",reason:" + reason);
75                     if (mListener != null) {
76                         if (reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)) {
77                             // 短按home键
78                             mListener.onHomePressed();
79                         } else if (reason.equals(SYSTEM_DIALOG_REASON_RECENT_APPS)) {
80                             // 长按home键
81                             mListener.onHomeLongPressed();
82                         }
83                     }
84                 }
85             }
86         }
87     }
88 }
时间: 2025-01-04 15:46:34

android的Home键的监听封装工具类(一)的相关文章

[转]Android应用中返回键的监听及处理

用户在点击手机的返回按钮时,默认是推出当前的activty,但是有时用户不小心按到返回,所以需要给用户一个提示,这就需要重写onkeydown事件,实现的效果如下: 标签:    Android SDK 代码片段(2) [全屏查看所有代码] 1. [图片] 截图 2. [代码][Java]代码     跳至                         [2]     [全屏预览] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

【Android】使用Intent调用系统其它程序,使用onKeyDown对音量键的监听,长按事件

Intent在安卓编程中非常常见,在<[Android]多个Activity之间利用bundle传递数值>(点击打开链接)中已经展示了它可以唤醒其它Activity并在Activity之间传递数据.其实Intent的作用远非于此,它还可以调用系统中其它固有程序,比如拨打电话.发送短信等.onKeyDown也是如此,不仅仅可以对设备的菜单键进行监听,这在<[Android]各式各样的弹出框与对菜单键.返回键的监听>(点击打开链接)中已经展示过的,对设备的音量调节键也是可以监听的, 下

Android应用中返回键的监听及处理

MainActivity如下: package com.testnbackpressed; import android.os.Bundle; import android.view.KeyEvent; import android.app.Activity; /** * Demo描述: * 处理Back键按下事件 * * 注意事项: * 以下两种方法勿一起使用 */ public class MainActivity extends Activity { @Override protected

【Android】各式各样的弹出框与对菜单键、返回键的监听

Android自带各式各样的弹出框,弹出框也是安卓基本的组件之一.同时安卓程序可以对菜单键.返回键的监听,但在安卓4.0之后就禁止对Home键的屏蔽与监听,强制保留为系统守护按键,如果非要对Home键的屏蔽与监听,就会出现java.lang.IllegalArgumentException: Window type can not be changed after the window is added.的错误. 下面写一个小程序,来说明Android各式各样的弹出框,同时,安卓是如何对菜单键.

Android 优雅的让Fragment监听返回键

Activity可以很容易的得到物理返回键的监听事件,而Fragment却不能.假设FragmentActivity有三个Fragment,一般安卓用户期望点击返回键会一层层返回到FragmentActivity.当然,我们可以将每个Fragment对应的Transaction放到BackStack中,但是如果每个Fragment有对返回事件的特殊消费,那么在FragmentActivity的onBackPressed()中的代码就会比较混乱,例如: @Override public void

Android开发之使用广播监听网络状态变化

我们经常需要判断网络状态的变化,如有无网络,所以需要监听网络状态的变化,比如网络断开,网络连接给予友好提示.如何监听网络状态的变化呢,最近工作中需要用到这个,于是就用广播机制来实现了网络状态的监听. 使用广播机制来监听网络状态主要涉及到以下几点: 1.需要自己编写个网络广播接收器,该接收器继承BroadcastReceiver类,用来接收系统发出的广播.比如我自己写了个NetStatusReceiver广播接收器.代码如下: package com.log.system; import andr

KVO键值监听

KVO 键值监听:当我想知道一个对象的属性是否发生改变的时候 做出响应,就需要添加监听keypath 和 key的区别keypath会自动寻找子类的属性key只会寻找当前类的属性添加键值监听[person addObserver:self forKeyPath:@“属性” options:.....] 当键值发生改变的时候调用-(void)obserValueForKeyPath:(NSString ) 底层实现:运行的时候 创建一个当前类的子类,重写子类的set方法 系统 建立了一个子类,然后

Android NDK开发(八)——应用监听自身卸载,弹出用户反馈调查

转载请注明出处:http://blog.csdn.net/allen315410/article/details/42521251 监听卸载情景和原理分析 1,情景分析 在上上篇博客中我写了一下NDK开发实践项目,使用开源的LAME库转码MP3,作为前面几篇基础博客的加深理解使用的,但是这样的项目用处不大,除了练练NDK功底.这篇博客,我将讲述一下一个各大应用中很常见的一个功能,同样也是基于JNI开发的Android应用小Demo,看完这个之后,不仅可以加深对NDK开发的理解,而且该Demo也可

Android开机和关机广播监听

Android开机.关机广播监听 一.开机广播的监听 1.在AndroidManifest.xml文件注册接收开机广播 <receiver android:name=".XXXBroadcastReceiver" > <intent-filter> <!-- 开机广播 --> <action android:name="android.intent.action.BOOT_COMPLETED" /> </inte