Android 监听系统物理键(例如返回键,HOME键,数字键)

虽然随着全面屏的越来越流行,物理键位的作用越来越少,但是很多设备比如PDA和屏幕之类的设备仍然需要用到物理键位,今天分享下拦截监听物理键位

 override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
        // TODO Auto-generated method stub
      	if (keyCode == KeyEvent.KEYCODE_BACK) {//返回键
            Toast.makeText(this, "F2", Toast.LENGTH_SHORT).show()
        } else if (keyCode == KeyEvent.KEYCODE_HOME) {//HOME键
            Toast.makeText(this, "F3", Toast.LENGTH_SHORT).show()
        } else if (keyCode == KeyEvent.KEYCODE_NUMPAD_0) {数字键
            Toast.makeText(this, "F4", Toast.LENGTH_SHORT).show()
        }
        return super.onKeyDown(keyCode, event)
    }
我们只需要重写 onKeyDown()方法

注意:很多物理键不一一叙述,但是小伙伴可以debug 打印keycode的方式获知键位参数进行判断

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android 中,无法直接监听系统返回。系统返回是由系统处理的,因此无法通过常规的事件监听方式来捕获。 不过,可以通过重写 Activity 的 onKeyDown() 方法来捕获系统返回事件。具体实现步骤如下: 1. 重写 Activity 的 onKeyDown() 方法。 2. 在 onKeyDown() 方法中判断按下的是否是返回,并执行相应的操作,例如返回上一个 Activity。 示例代码如下: ``` @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { // 按下返回时执行的操作 // 例如返回上一个 Activity return true; // 返回 true 表示已经处理了按键事件,不再继续传递给系统处理 } return super.onKeyDown(keyCode, event); } ``` 需要注意的是,如果当前 Activity 是任务栈中的根 Activity,按下返回将会退出应用程序。可以通过在 onKeyDown() 方法中添加判断来处理这种情况。例如: ``` @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if (isTaskRoot()) { // 如果当前 Activity 是任务栈中的根 Activity,不执行任何操作 return true; // 返回 true 表示已经处理了按键事件,不再继续传递给系统处理 } // 按下返回时执行的操作 // 例如返回上一个 Activity return true; // 返回 true 表示已经处理了按键事件,不再继续传递给系统处理 } return super.onKeyDown(keyCode, event); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值