我正在制作一个需要键盘的远程应用程序。我没有使用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);
}
Run Code Online (Sandbox Code Playgroud)
但是当我按下Enter键时,它没有发送(我尝试了Jelly Bean Default和Hacker's Keyboard)。甚至没有“ -1”。该方法甚至没有被调用。它适用于大多数其他键(数字,字母,退格键,某些符号),因此它不是应用程序本身。
调用键盘并在以后隐藏它的代码:
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
Run Code Online (Sandbox Code Playgroud)
有什么我想念的吗?另外,是否有更好的方法将Android密钥代码转换为Ascii密钥(可通过专门复制java.awt.Robot)。
感谢您的任何帮助。
也可以使用此函数来捕获 Enter 键。
@覆盖
公共布尔dispatchKeyEvent(KeyEvent事件){
try
{
//
if(event.getAction()== KeyEvent.ACTION_UP)
{
System.out.println(event.getAction() + " " + event.getKeyCode() + " - " + (char) event.getUnicodeChar());
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2869 次 |
| 最近记录: |