让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文件,安装、配置后即可正常使用受控端的中英文输入了,和在本地使用没什么区别。
相关文章:

让DroidVNC-NG支持中文输入
DroidVNC-NG支持控制端输入内容,但是仅支持英文字符,如果需要控制输入法软键盘输入中文的话就没办法了,经过摸索找到了解决办法。 这个解决办法有个条件就是让DroidVNC-NG成为系统级应用(这个条件比较苛刻)ÿ…...
android dialog 显示时 activity 是否会执行 onPause onStop
当一个 Android Dialog 显示时,当前 Activity 通常不会执行 onPause 或 onStop 方法。Dialog 是附加到 Activity 上的一个窗口,它不会中断或替换当前的 Activity,因此 Activity 的生命周期方法 onPause 和 onStop 不会被调用。 然而…...

如何在MySQL中按字符串中的数字排序
在管理数据库时,我们经常遇到需要按嵌入在字符串中的数字进行排序的情况。这在实际应用中尤为常见,比如文件名、代码版本号等字段中通常包含数字,而这些数字往往是排序的关键。本文将详细介绍如何在MySQL中利用正则表达式提取字符串中的数字并…...

memcacheredis构建缓存服务器
Memcached&Redis构建缓存服务器 前言 许多Web应用都将数据保存到 RDBMS中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、 网站显示延迟等重大影响。Memcached/redis是高性能…...

Linux基础- 使用 Apache 服务部署静态网站
目录 零. 简介 一. linux安装Apache 二. 创建网页 三. window访问 修改了一下默认端口 到 8080 零. 简介 Apache 是世界使用排名第一的 Web 服务器软件。 它具有以下一些显著特点和优势: 开源免费:可以免费使用和修改,拥有庞大的社区支…...

接口自动化测试框架实战(Pytest+Allure+Excel)
🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 1. Allure 简介 Allure 框架是一个灵活的、轻量级的、支持多语言的测试报告工具,它不…...

如何预防和处理他人盗用IP地址?
IP地址的定义及作用 解释 IP 地址在互联网中的作用。它是唯一标识网络设备的数字地址,类似于物理世界中的邮政地址。 1、IP地址盗窃的定义 解释一下什么是IP地址盗用,即非法使用他人的IP地址或者伪造IP地址的行为,这种行为可能引发法律和安…...

【ai】李沐 动手深度学学v2 环境安装:anaconda3、pycharm、d2
cuda-toolkit cuda_12.5.0_windows_network.exe 官方课程网站 第二版资源下载release版本 pycharm版本 李沐 【动手学深度学习v2 PyTorch版】 课程笔记 CUDA 选择11, 实际下载 12.5.0...
前后端分离对软件行业及架构设计的影响
在软件开发领域,前后端分离是一种越来越流行的架构设计模式。这种方法将用户界面(前端)与服务器逻辑(后端)分离开来,允许它们独立开发、测试和部署。本文将探讨前后端分离对软件行业和架构设计的影响&#…...
深入解析Dubbo架构层次
什么是Dubbo? Dubbo是阿里巴巴开源的一款高性能优秀的服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案。它的主要功能包括: 远程通信:提供高效的远程通信能力。负载均衡࿱…...
关于GPIO的上拉、下拉,无上下拉
1.GPIO_PULLUP(上拉) 作用和原理 作用:上拉模式会在GPIO引脚和电源电压(Vcc)之间连接一个内部上拉电阻。原理:当引脚配置为输入模式时,如果引脚没有连接到其他外部电路,内部上拉电…...

Python 语法基础二
7.常用内置函数 执行这个命令可以查看所有内置函数和内置对象(两个下划线) >>>dir(__builtins__) [__class__, __contains__, __delattr__, __delitem__, __dir__, __doc__, __eq__, __format__, __ge__, __getattribute__, __getitem__, __gt…...
HTML5与HTML:不仅仅是标签的革新
当我们提到HTML5,很多人会想到这是HTML的一个升级版本,增加了许多新的标签和特性。然而,HTML5带来的变化远不止于此。它是一个全面的网页开发框架,重新定义了网络应用程序的构建方式,为开发者提供了前所未有的灵活性和…...
Mybatis面试学习
1.介绍一下mybatis mybatis是一个半自动的ORM的框架,ORM就是对象关系映射。(对象指的是Java对象,关系指的是数据库中的关系模型,对象关系映射,指的就是在Java对象和数据库的关系模型之间建立一种对应关系)…...
el-date-picker设置时间范围
下面这种写法会报错:找不到expirationDate,这是因为涉及到this的指向问题 在普通函数中,this 的上下文并不指向 Vue 组件实例,而是取决于函数的调用方式或者是否使用了严格模式 <el-date-pickerclass"date-icon-common&q…...

Links: Challenging Puzzle Game Template(益智游戏模板)
链接:挑战益智游戏 《Links》是一款独特且具有挑战性的益智游戏,即将发布。 每个级别都会向玩家展示不同的棋盘。目标是通过移动和旋转所有棋子来连接它们。每个棋子都有自己的特点和功能-你可以移动它们,旋转它们,或者两者兼而有之。连接所有棋子,以解决难度和挑战不断增…...

java基于ssm+jsp 仓库智能仓储系统
1管理员功能模块 管理员登录,通过填写用户名、密码等信息,输入完成后选择登录即可进入智能仓储系统 ,如图1所示。 图1管理员登录界面图 智能仓储系统 ,在智能仓储系统可以查看个人中心、公告信息管理、员工管理、供应商管理、商…...

第24篇 滑动开关控制LED<二>
Q:如何使用Intel FPGA Monitor Program创建滑动开关控制LED工程并运行呢? A:创建工程的基本过程与前面的Intel FPGA Monitor Program的使用<三>一样,不同的地方是,本实验工程用到了开发板的外设硬件LED和SW&…...

Redis单例部署
目录 1. 概述2. 参考3. 环境4. 部署4.1 操作系统4.1.1 修改系统参数4.1.2 关闭透明大页内存4.1.3 修改系统限制 4.2 安装Redis4.2.1 下载Redis4.2.2 创建redis账号4.2.3 添加Redis环境变量4.2.4 创建Redis使用目录4.2.5 安装Redis4.2.6 手动修改配置文件(**可跳过&a…...
HarmonyOS4升级到Harmonyos Next(Api 11)学习捷径
HarmonyOS4升级到Harmonyos Next(Api 11)学习捷径,新技术学习路上少走弯路。HarmonyOS NEXT和HarmonyOS 4的基本语法都是一样的,但是还有一些区别。如果你学会HarmonyOS4,那么HarmonyOS Next也自然而然的会了。 Harmon…...

【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...

Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...