我正在制作一个需要键盘的远程应用程序。我没有使用 EditText,我强迫它务实地调用。
在活动中,我有一个半智能onKeyDown
代码,它将 android keycode 转换为我的服务器可处理的 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键时,它没有发送(我试过果冻豆默认和黑客键盘)。甚至没有“-1”。该方法甚至没有被调用。它适用于大多数其他键(数字、字母、退格键、某些符号),因此它不是应用程序本身。
调用键盘并稍后将其隐藏的代码:
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
有什么我想念的吗?此外,是否有更好的方法将 Android 键码转换为 Ascii 键(特别是可通过 复制java.awt.Robot
)。
感谢您提前提供任何帮助。