当前位置: 首页 > news >正文

让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-zkeycode = keycode - 68;bSimKey=true;}else if (keycode>=48 && keycode<=57){ //0-9keycode = keycode - 41;bSimKey=true;}if(bSimKey) {typeIn(keycode,0);}else {//以下是原有代码//...}

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

http://www.lryc.cn/news/385491.html

相关文章:

  • android dialog 显示时 activity 是否会执行 onPause onStop
  • 如何在MySQL中按字符串中的数字排序
  • memcacheredis构建缓存服务器
  • Linux基础- 使用 Apache 服务部署静态网站
  • 接口自动化测试框架实战(Pytest+Allure+Excel)
  • 如何预防和处理他人盗用IP地址?
  • 【ai】李沐 动手深度学学v2 环境安装:anaconda3、pycharm、d2
  • 前后端分离对软件行业及架构设计的影响
  • 深入解析Dubbo架构层次
  • 关于GPIO的上拉、下拉,无上下拉
  • Python 语法基础二
  • HTML5与HTML:不仅仅是标签的革新
  • Mybatis面试学习
  • el-date-picker设置时间范围
  • Links: Challenging Puzzle Game Template(益智游戏模板)
  • java基于ssm+jsp 仓库智能仓储系统
  • 第24篇 滑动开关控制LED<二>
  • Redis单例部署
  • HarmonyOS4升级到Harmonyos Next(Api 11)学习捷径
  • [电子电路学]电路分析基本概念1
  • Linux bash: /usr/local/gcc/bin/gcc: 不是目录
  • vue项目中,pnpm不能用-解决
  • 数据处理python
  • 【MotionCap】SLAHMR 在 Colab 的demo运行笔记
  • Qt-Advanced-Docking-System示例程序
  • 戴尔笔记本重装系统?笔记本卡顿失灵?一键重装系统!
  • ViewController 的常用跳转及返回方法
  • FFmpeg开发笔记(四十一)结合OBS与MediaMTX实现SRT直播推流
  • 探索AI的巅峰:详解GPT-3.5与GPT-4系列模型的区别
  • Linux-笔记 使用SCP命令传输文件报错 :IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!