android home键监听

来源:互联网 发布:左轮吉他淘宝网 编辑:程序博客网 时间:2024/06/10 03:27

最近在做一个关于人证比对的项目,其中用到了定制的android设备,如下图:


这是一个测试版本的设备,其中右边的是一个定制的android设备,左边的是身份证读卡器。该应用主要应用在酒店,旅馆,网吧等一些服务性行业用作于判断真人与身份证的识别度的问题。其中在实际使用中需要一直运行,所以在开发的过程中需要操作者点击home键的操作,具体有以下三种方式:

一:通过onSaveInstanceState方法

该方法的官网介绍如下:


看解释的意思是当前的activity结束后(任何情况下导致的activity调用finish)都会调用该方法进行保存操作,但是用于监听home键的监听有一点碰巧的嫌疑,所以亲试后建议不使用该方法。

二:通过onUserLeaveHint方法


这个方法在官方的文档中的解释是可以用作home监听,强调的是只用户选择的结果,点击home键也是用户操作。但是在系统的一些操作就是不被调用的,比如说:来电。所以调用情况如下:

* 用户手动离开当前activity,会调用该方法,* 比如用户主动切换任务,短按home进入桌面等。* 系统自动切换activity不会调用此方法,如来电,灭屏等。
三:注册广播形式

该方法就不多说了,直接上代码

//home监听广播this.registerReceiver(mHomeReceiver, new IntentFilter(        Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
 创建一个广播

/** * home键监听 */private BroadcastReceiver mHomeReceiver = new BroadcastReceiver() {    String SYSTEM_REASON = "reason";    String SYSTEM_HOME_KEY = "homekey";    String SYSTEM_HOME_KEY_LONG = "recentapps";    @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_REASON);            if (TextUtils.equals(reason, SYSTEM_HOME_KEY)) {                //表示按了home键,程序到了后台                android.os.Process.killProcess(android.os.Process.myPid());                System.exit(0);            }else if(TextUtils.equals(reason, SYSTEM_HOME_KEY_LONG)){                //表示长按home键,显示最近使用的程序列表                android.os.Process.killProcess(android.os.Process.myPid());                System.exit(0);            }        }    }};




0 0
原创粉丝点击