关于Home键监听的问题

 今天在做项目的时候,要实现的一个对home键监听的功能,就是点击home键后,应用不推到后台,而是直接地退出应用了,一开始觉得很简单,也相信很多人都会觉得直接调用onKeyDown()方法不就行了嘛,于是,我也是这么尝试的:

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		
		switch(keyCode){
		case KeyEvent.KEYCODE_BACK:
			
			System.exit(0);
			
			break;
			
		case KeyEvent.KEYCODE_HOME:
			System.exit(0);
			break;
			default:
				break;
		}
		
		return super.onKeyDown(keyCode, event);
	}

 好像很完美的样子。然后导入项目,点击home,特么怎么还是把应用切入后台了,不是应该直接退出应用了嘛?

 丢。。。原来对home的监听时系统级的操作,所以,根本在onKeyDown这么low的方法上行不通,当然对back和menu的监听是完全没有问题的。

 所以,只能另辟蹊径了,想想不是还有监听广播嘛,也对,就去搜Home的广播,但是就这样被我搜到了一个好的方法,根本不用这么复杂,也就一个方法就可以搞定的事了。

 这个方法就是onUserLeaveHint(),好高大上的感觉,短按home键的时候就是会进入该方法,就这么直接了当。

 代码如下喽,实现如此简单:

	/**
	 * 短按Home键灰进入该方法,起到间接监听到home时间
	 */
	@Override
	protected void onUserLeaveHint() {
		
		System.exit(0);
		
		super.onUserLeaveHint();
	}
但是,要注意的是:只有在短按home键的时候,才会进入该方法,长按时没有用的,一定要记住。至于广播监听能否实现我觉得是可以的,可以自己去实现。


最后,因为要显得高级一点,所以在使用home键的时候,我一般都没有点击home实体键,而是直接使用终端adb命令实现的(其实我想说的是,做车载导航的,在测试板着这种开发电路板上哪有home键啊,只能这样乖乖的去搞adb啦),下面奉上基本常用的adb模拟实体键:

电话键


 
KEYCODE_CALL 拨号键 5
KEYCODE_ENDCALL 挂机键 6
KEYCODE_HOME 按键Home 3
KEYCODE_MENU 菜单 82
KEYCODE_BACK 返回键 4
KEYCODE_SEARCH 搜索 84
KEYCODE_CAMERA 拍照键 27
KEYCODE_FOCUS 拍照对焦键 80
KEYCODE_POWER 电源键 26
KEYCODE_NOTIFICATION 通知键 83
KEYCODE_MUTE 话筒静音键 91
KEYCODE_VOLUME_MUTE 扬声器静音键 164
KEYCODE_VOLUME_UP 音量增加键 24
KEYCODE_VOLUME_DOWN 音量减小键 25


 

控制键


 
KEYCODE_ENTER 回车键 66
KEYCODE_ESCAPE ESC键 111
KEYCODE_DPAD_CENTER 导航键 确定键 23
KEYCODE_DPAD_UP 导航键 向上 19
KEYCODE_DPAD_DOWN 导航键 向下 20
KEYCODE_DPAD_LEFT 导航键 向左 21
KEYCODE_DPAD_RIGHT 导航键 向右 22
KEYCODE_MOVE_HOME 光标移动到开始键 122
KEYCODE_MOVE_END 光标移动到末尾键 123
KEYCODE_PAGE_UP 向上翻页键 92
KEYCODE_PAGE_DOWN 向下翻页键
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值