建设局网站莱芜网站建设

广东省华晟鼎创新材料有限公司 2026/09/09 20:48:06

在PC端通过云手机客户端远程操作云手机时,会面临输入方式不匹配的问题:当在云手机界面点击输入框,系统会触发Android自带的虚拟键盘,该类键盘主要针对触摸屏设计,在PC端难以高效使用。而PC用户通常更习惯于使用实体键盘进行输入。那么,如何实现在云手机中点选输入框时,自动唤起PC端本地输入法,以提供更符合用户习惯的输入体验?本文将详细阐述其实现原理。

传统实现思路:

直接透传PC键盘按键,借助Android内置输入法输入。

这种方式最直观最容易想到,但是网络交互太多容易出现卡顿,输入时经常需要鼠标、键盘来回切换,另外内置输入法会遮挡云手机中APP界面或导致APP界面展示区域变小。

云手机实现思路:

利用PC本地输入法(搜狗、百度、google等输入法)完成词组输入,再将输入的内容经网络发送给云手机,再由云手机Android系统送给APP的输入框;

特点:

1、在PC上利用PC本地输入法完成联想输入,不需要用云手机的输入法进行按键联想;

2、在网络上传输的是输入结果,不是键盘按键字符。

好处:

PC端用户体验好,与PC端本地输入完全一样,因网络交互大大减少不会因为网络不好出现卡顿,输入方便快捷,也不存在输入法界面遮挡APP界面的问题。

本思路实现的关键问题:

1、PC端如何知道何时该打开输入法,何时该关闭输入法;

2、云手机收到PC端的输入字符串,如何注入到当前光标焦点所在的输入框;

关键问题的解决:

借助输入法,在云手机中实现一个无界面的自定义输入法程序。即在自定义输入法中接收PC发送过来的输入数据,再通过操作系统的输入法编程接口注入到Android系统,再由Android系统将输入字符串送给APP的输入框。

什么是输入法:

1、输入法是一个系统服务程序,时时刻刻都在Android系统中运行;

2、输入法是由Android系统封装实现,并向用户提供编程接口,具备以下特异功能:

1、能获取键盘输入,但是当前光标焦点却不在输入法程序自身,也就是拦截输入框的键盘输入;

2、能向当前光标焦点所在其他APP输入框注入字符串;

3、能感知到什么时候该打开输入法,什么时候需要关闭输入法;

3、Android系统将上述功能封装在一个类中,方便用户通过继承该类实现各种各样的输入法,如:百度输入法,搜狗输入法等。

1、通过继承android.inputmethodservice.InputMethodService的方式实现一个自定义的无界面的输入法;可参考如下代码实现:

importandroid.inputmethodservice.InputMethodService;

publicclassMyInputMethodextendsInputMethodService{}

2、重写输入法服务的onStartInputView方法,通知PC端打开输入发;当云手机中有输入框获得光标焦点时,Android系统会调用输入法的onStartInputView方法;

@Override

publicvoidonStartInputView(EditorInfo info,booleanrestarting) {

//向PC端发送打开输入法指令。

super.onStartInputView(info, restarting);

}

3、重写输入法服务的onFinishInputView方法,通知PC端关闭输入法;当云手机中入框失去光标焦点时,Android系统会调用输入法的onFinishInputView方法;

@Override

publicvoidonFinishInputView(booleanfinishingInput) {

//向PC端发送关闭输入法指令。

super.onFinishInputView(finishingInput);

}

4、在自定义输入法中接收PC端发来的输入数据,并通过输入法InputConnection的commitText方法向Android系统转交收到的输入数据,再由Android系统送给光标焦点所在输入框。可参考如下:代码实现:

InputConnection iconn = getCurrentInputConnection();

iconn.commitText(data1, 1);

5、PC端收到输入法打开指令时,打开输入法。具体实现就是:显示一个小的输入框,获取光标焦点,系统便自动打开输入法;

6、PC端收到输入法关闭指令时,关闭输入法。具体实现就是:输入框失去光标焦点,并隐藏,系统便自动关闭输入法。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

广州网站建设工作室太原网站建设

一、前言在前文 通义千问3-VL-Plus - 界面交互-CSDN博客 之后,我改装一下代码,让本地图片可以被识别。整体改造思路兼容本地图片:新增本地图片路径

2026/06/30 12:30:02

学校网站建设容桂网站建设

想要在Java生态中轻松接入区块链技术吗?Web3j作为轻量级Java库,让你无需深入底层协议即可构建强大的去中心化应用。本文将带你从零开始,快速完成Web3

2026/06/30 14:18:09

网站建设论坛西安网站建设公司

Tsukimi播放器完全指南:开源Jellyfin客户端的极致体验与实用技巧【免费下载链接】tsukimiA simple third-party Emby client项目地址: ht

2026/06/30 10:38:51

四川网站建设青岛网站建设公司

Excalidraw开源优势解析:自由部署、数据私有化保障在远程协作成为常态的今天,一个简单却常被忽视的问题正在困扰着技术团队:我们画的架构图、流程图和原型草

2026/06/30 12:07:29

上海网站建设网站建设与维护

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visu

2026/06/30 13:32:06

网站建设入门北京网站建设报价

快速体验打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容:开发一个EXE文件批量分析工具,要求:1. 支持

2026/06/30 12:30:31

沧州网站建设成都企业网站建设

还在为找不到合适的多人游戏而烦恼吗?想要与好友在同一台电脑上畅享对战乐趣?Nucleus Co-op这款革命性的分屏工具将彻底改变您的游戏体验!只需一个游戏副

2026/06/30 12:30:31

云南网站建设宝山网站建设

线程取消机制的深入解析与应用1. 线程取消基础线程取消是多线程编程中一个重要的概念,它允许我们在需要时终止某个线程的执行。在某些情况下,我们可能希望某些代码段能够不受干扰地完成,这时可以通过调用pth

2026/06/30 13:20:05

济南网站建设公司网站建设 公司

还在为远程访问的复杂配置而烦恼吗?想象一下,只需10分钟,你就能拥有一个完全自主掌控的专业级远程桌面服务器。RustDesk服务器一键部署方案,

2026/06/30 13:15:35

重庆网站建设邵阳网站建设

深入解析同或门的传输特性与延迟行为:从晶体管到系统级优化在高速数字电路设计中,每一个逻辑门都不再是孤立的存在。它们之间的时序衔接、信号完整性以及动态响应速度,

2026/06/30 12:27:01