电脑键盘控制手机输入(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

你可能感兴趣的:(电脑键盘控制手机输入(fill android text by pc keyboard))