onKeyUp无法处理从硬键盘输入

问题描述 投票:0回答:1

我有一个带有一组按钮的活动,它类似于NumPad键盘。

我的目的:借助少量(硬)“ usb NumPad键盘”来做一些输入数据的终端-界面看起来像NumPad-只是一组按钮。

我想处理所有键盘事件以进行所需的操作(每个按钮都有我自己的功能)。覆盖的函数onKeyUponKeyDown –除处理Enter键外,它们可以满足我的所有需要​​。正如我所看到的,在这两个功能中,这根本不是一件大事。在“输入”活动中打开菜单,因此“输入”是一些特殊功能–不是对我来说,而是对系统。

我在这里看到的所有主题(如何处理“ Enter”)都与软键盘或EditView有关。我的活动上没有任何可编辑的内容,我只是想捕捉Enter事件,或者可能链接Enter和一些活动按钮。

    override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean {
    Toast.makeText(this,keyCode.toString(),Toast.LENGTH_SHORT).show()

    val res: Int = when (keyCode) {
        KeyEvent.KEYCODE_NUMPAD_0 -> 0
        KeyEvent.KEYCODE_0 -> 0

        KeyEvent.KEYCODE_NUMPAD_1 -> 1
        KeyEvent.KEYCODE_1 -> 1
        KeyEvent.KEYCODE_DPAD_DOWN_LEFT -> 1

        KeyEvent.KEYCODE_NUMPAD_DOT -> 10

        KeyEvent.KEYCODE_NUM_LOCK -> 11

        KeyEvent.KEYCODE_NUMPAD_ENTER -> 16 //never happens

        else -> -1
    }
    if (res>=0) doAction(res)

    return if (res == -1) super.onKeyUp(keyCode, event)
    else true
}
android kotlin keyboard-events
1个回答
0
投票

使用dispatchKeyEvent处理输入:

override fun dispatchKeyEvent(event:KeyEvent):Boolean {
   if (event.getAction() === KeyEvent.ACTION_UP)
   {
      Toast.makeText(this,event.getKeyCode().toString(),Toast.LENGTH_SHORT).show()
      return true
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.