让DroidVNC-NG支持中文输入

DroidVNC-NG支持控制端输入内容,但是仅支持英文字符,如果需要控制输入法软键盘输入中文的话就没办法了,经过摸索找到了解决办法。 

这个解决办法有个条件就是让DroidVNC-NG成为系统级应用(这个条件比较苛刻),所幸现在用的安卓系统有源代码并且是自己编译的,可以拿到系统签名文件。

方法简述:

一、Manifest.xml文件中添加两条:

1.application中添加:

android:sharedUserId="android.uid.system"

2.添加权限:

 <uses-permission android:name="android.permission.INJECT_EVENTS"/>

二、InputService.java中打补丁

1.添加模拟按键函数:

	/*
		函数功能:模拟输入
		输入参数:
			KeyCode:要模拟的键值
			shiftOn:是否按下shift键
	 */
	public static void typeIn( final int KeyCode ,final int shiftOn){
		try {
			Instrumentation inst = new Instrumentation();
			if(shiftOn==0) {
				inst.sendKeyDownUpSync(KeyCode);
			}
			else{
				long  downTime= SystemClock.uptimeMillis();
				long  eventTime= downTime;
				inst.sendKeySync(new KeyEvent(downTime,eventTime,KeyEvent.ACTION_DOWN,KeyCode ,0, KeyEvent.META_SHIFT_ON));
				inst.sendKeySync(new KeyEvent(downTime,eventTime,KeyEvent.ACTION_UP, KeyCode,0, KeyEvent.META_SHIFT_ON));
			}
			Log.d(TAG, "simulate key in: key " + KeyCode);
		} catch (Exception e) {
			Log.e("Exception when sendKeySync", e.toString());
		}
	}

2.在现有的onKeyEvent函数中添加判断代码:

	public static void onKeyEvent(int down, long keysym, long client) {

            //以上是原有代码...
			
            if(keysym == 0xff08 && down != 0){ //后退,替换原有的后退键处理代码
				int keycode = 67;
				typeIn(keycode,0);
			}

            
            /*
			    ISO-8859-1 input
			 */
			if (keysym >= 32 && keysym <= 255 && down != 0) {
                //以下处理自己需要的按键操作:空格、字符a-z、数字0-9等
				int keycode = Integer.parseInt(String.valueOf(keysym));
				boolean bSimKey=false;
				if(keycode==32){//空格
					keycode=62;
					bSimKey=true;
				}
				else if(keycode>=97 && keycode<=122) { //a-z
					keycode = keycode - 68;
					bSimKey=true;
				}
				else if (keycode>=48 && keycode<=57){ //0-9
					keycode = keycode - 41;
					bSimKey=true;
				}

				if(bSimKey) {
					typeIn(keycode,0);
				}
				else {
                //以下是原有代码
                //...



    }


三、用系统签名文件生成签名的apk文件,安装、配置后即可正常使用受控端的中英文输入了,和在本地使用没什么区别。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值