基于TCP和多线程实现无线鼠标键盘-InputMethodManager

为了实现无线键盘的功能,使用了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,即是否是按下了物理返回键,如果是,则提示是否退出程序;否则即是按下了软键盘上的键,将按键的字符传递给发送线程发送。

运行效果:

基于TCP和多线程实现无线鼠标键盘-InputMethodManager

点击“键盘”按钮后弹出软键盘:

基于TCP和多线程实现无线鼠标键盘-InputMethodManager

你可能感兴趣的:(基于TCP和多线程实现无线鼠标键盘-InputMethodManager)