电脑键盘控制手机输入(fill android text by pc keyboard)

关键字 usb socket android pc keyboard

前言

上一篇文章简述了如何实现电脑对手机的远程控制,留下了键盘输入没有实现,本篇文章将简述如何实现。

方案

废弃方案一

也许你可能觉得,那岂不是很简单,adb命令本身就自带,通过adb shell input text xxx来实现,是的,这是可以通过电脑给手机输入框传输文本,不过,如果你测试的话,你会发现存在两个问题(1) 反应缓慢,电脑上输入的文本在手机上显示会延迟0.5s左右(2)不支持中文。

废弃方案二

针对不能输入中文,网上有一个解决方案,通过自定义键盘,写一个广播,然后电脑端通过adb命令发送广播,adb shell am broadcast -a ADB_INPUT_TEXT --es msg '你好啊,hello',当然 msg是通过unicode编码的,然后在自定义BroadcastReceiver去处理接收到的经过unicode编码的文本,在解码出,通过自定义键盘,调用inputConnection.commitText(msg, 1);把文本输入到输入框,具体可以参考ADBKeyBoard
到这里,你可能觉得,这不都靠谱么,还有什么问题。是的,已经解决了中文的输入,可是输入的反应还不是很及时

可行方案

基于前人的经验,我采用了在pc和手机建立了socket链接,然后发送文本,手机充当服务端,pc充当客户端,通过adb端口转发adb forward tcp:12580 tcp:10086把pc端的数据转发到手机上。具体的代码可以参照我的ADBSocketKeyBoard
具体效果可以看如下动图,反应可以算是很及时了,并且支持键盘移动手机光标的功能,不过目前还不支持手机修改文本同步到PC端。目前还没有接入到投屏上,这里只是个实现思路,这个会在下一步考虑。

无码图.gif

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,726评论 25 709
  • 出行第三天,一早吉隆坡转科伦坡,终于来到微笑之国,白天时间多了2.5小时 关于斯里兰卡 斯里兰卡的人民走路,骑车,...
    虾米酱Wow阅读 278评论 0 0
  • 数据结构: 是相互之间存在一种或多种特定关系的数据元素的集合。 数据结构是一门研究 ----非数值计算的程序设计问...
    努力生活的西鱼阅读 569评论 0 0
  • 我想你已经忘了新叶 否则如何会桎梏于枷锁 像十月海棠揉进梦里 没了踪迹 我见过深夜路灯下你的影子 模糊的轮廓 在摇...
    沉念棠阅读 143评论 0 0