在Android的onKeyDown上捕获Enter键

时间:2013-07-26 16:14:22

标签: android keyboard

我正在制作一个需要键盘的远程应用程序。我没有使用EditText,我强迫它以实用方式调用。

在活动中,我有一个半智能onKeyDown代码,它将android密钥代码转换为我的服务器可处理的ascii代码并发送它:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) {
    int asciiKey = -1;
    if (keyCode >= KeyEvent.KEYCODE_A && keyCode <= KeyEvent.KEYCODE_Z) {
        asciiKey = keyCode - KeyEvent.KEYCODE_A + 'A';
    } else if (keyCode==KeyEvent.KEYCODE_DEL) {
        asciiKey = 8;
    } else if (keyCode==KeyEvent.KEYCODE_ENTER) {
        asciiKey = 13;
    } else {
        asciiKey = event.getUnicodeChar(event.getMetaState());
    }
    out.println("k "+asciiKey);
    return super.onKeyDown(keyCode, event);
}

但是当我按 Enter 键时,它没有发送(我已经尝试了Jelly Bean Default和Hacker的键盘)。甚至不是“-1”。甚至没有调用该方法。它适用于大多数其他键(数字,字母,退格键,一些符号),因此它不是应用程序本身。

调用键盘并稍后隐藏它的代码:

InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);

有什么我想念的吗?此外,是否有更好的方法将Android密钥代码转换为Ascii密钥(特别是java.awt.Robot可复制)。

感谢您提前提供任何帮助。

2 个答案:

答案 0 :(得分:3)

使用此功能也可以捕获回车键。

@Override
public boolean dispatchKeyEvent(KeyEvent event) {

try { // if(event.getAction()== KeyEvent.ACTION_UP) { System.out.println(event.getAction() + " " + event.getKeyCode() + " - " + (char) event.getUnicodeChar()); } } catch (Exception ex) { ex.printStackTrace(); } return true; }

答案 1 :(得分:-1)

尝试记录密钥

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) {

Log.d("KeyEvent", Integer.toString(KeyEvent.getKeyCode()));

return super.onKeyDown(keyCode, event);

}

转到此处查找密钥代码KeyEvent