關(guān)鍵字 usb
socket
android
pc
keyboard
前言
上一篇文章簡述了如何實現(xiàn)電腦對手機(jī)的遠(yuǎn)程控制,留下了鍵盤輸入沒有實現(xiàn),本篇文章將簡述如何實現(xiàn)。
方案
廢棄方案一
也許你可能覺得挂滓,那豈不是很簡單亚侠,adb命令本身就自帶验烧,通過adb shell input text xxx
來實現(xiàn)虐拓,是的沼沈,這是可以通過電腦給手機(jī)輸入框傳輸文本丈冬,不過嘱函,如果你測試的話,你會發(fā)現(xiàn)存在兩個問題(1) 反應(yīng)緩慢埂蕊,電腦上輸入的文本在手機(jī)上顯示會延遲0.5s左右(2)不支持中文往弓。
廢棄方案二
針對不能輸入中文,網(wǎng)上有一個解決方案蓄氧,通過自定義鍵盤,寫一個廣播函似,然后電腦端通過adb命令發(fā)送廣播,adb shell am broadcast -a ADB_INPUT_TEXT --es msg '你好啊喉童,hello'
撇寞,當(dāng)然 msg是通過unicode編碼的,然后在自定義BroadcastReceiver去處理接收到的經(jīng)過unicode編碼的文本堂氯,在解碼出蔑担,通過自定義鍵盤,調(diào)用inputConnection.commitText(msg, 1);
把文本輸入到輸入框咽白,具體可以參考ADBKeyBoard
到這里啤握,你可能覺得,這不都靠譜么晶框,還有什么問題排抬。是的懂从,已經(jīng)解決了中文的輸入,可是輸入的反應(yīng)還不是很及時
可行方案
基于前人的經(jīng)驗蹲蒲,我采用了在pc和手機(jī)建立了socket鏈接莫绣,然后發(fā)送文本,手機(jī)充當(dāng)服務(wù)端悠鞍,pc充當(dāng)客戶端对室,通過adb端口轉(zhuǎn)發(fā)adb forward tcp:12580 tcp:10086
把pc端的數(shù)據(jù)轉(zhuǎn)發(fā)到手機(jī)上。具體的代碼可以參照我的ADBSocketKeyBoard
具體效果可以看如下動圖咖祭,反應(yīng)可以算是很及時了掩宜,并且支持鍵盤移動手機(jī)光標(biāo)的功能,不過目前還不支持手機(jī)修改文本同步到PC端。目前還沒有接入到投屏上么翰,這里只是個實現(xiàn)思路牺汤,這個會在下一步考慮。