为了实现无线键盘的功能,使用了InputMethodManager弹出软键盘。
// 弹出软键盘
public void pop_keyboard(){
imm = (InputMethodManager)ctx.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
}
同时监听了按键事件onKeyDown。
public boolean onKeyDown(int keyCode, KeyEvent e){
// Log.i("keyCode", String.valueOf(keyCode));
// Log.i("e.getUnicodeChar", String.valueOf(e.getUnicodeChar()));
// Log.i("toString()", e.toString());
// 按下键盘上返回按钮
if (keyCode == KeyEvent.KEYCODE_BACK){
new AlertDialog.Builder(this)
.setTitle("确定退出")
.setMessage("确定退出?")
.setNegativeButton("No",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
})
.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
CloseActivityClass.exitClient(MainActivity.this);
}
}).show();
}
else
{
send_thread.set_str("k/" + (char)e.getUnicodeChar());
}
return true;
}
onKeyDown既监听软键盘的按键,也监听物理键的按键。当发生onKeyDown时,首先判断是否是KeyEvent.KEYCODE_BACK,即是否是按下了物理返回键,如果是,则提示是否退出程序;否则即是按下了软键盘上的键,将按键的字符传递给发送线程发送。
运行效果:
点击“键盘”按钮后弹出软键盘: