標籤:leaks 預防風險 border ace 中文 github 關注 發送 網路數
近年來,互連網電視開始火熱。樂視TV,小米TV,近期愛奇藝也在大肆的招人做愛奇藝電視。當然還有更被關注的蘋果電視。事實上。這個趨勢非常正常,也非常合理。傳統單純的接收電視節目的電視已經太傳統了,是該被革命了。樂視為代表的新一代互連網電視採取互連網的營銷方式,不須要實體店,不須要實體工廠,僅僅需方案。服務,網上預約,直接快遞等方式大大減少了成本,同一時候也能夠控制庫存,預防風險。同一時候他們都堅持硬體不賺錢,服務收費,更看重電視使用者物件這一潛在價值。
使用者多了,幹啥都方便,當然還有更大的智能家居大概念。
除了蘋果電視。其它無一不是採用Android系統。可是各種互連網電視說究竟它還是電視,不像手機,平板,PC等這些電子產品。使用者離它是有距離的,使用者是沒法直接觸控螢幕幕等方式來輸入的。因此Android軟鍵盤方式實在是不夠好的輸入互動方式。對於英語系的國家,這個電視的輸入還好解決。僅僅需通過外接鍵盤直接輸入。可是對於類似中文這樣的須要轉換的語種來說,就麻煩了。這是由於Android外接鍵盤僅僅能輸入英文字元,同一時候IME又沒法擷取外接鍵盤(僅僅支援觸摸軟鍵盤的字元)的輸入將其轉化為中文。這就讓我想到標題的“遠程IME”。
一個非常通用的情境就是:電視安裝了愛踢門的遠程IME。該IME串連上了手機的遠程輸入端。然後使用者在遠程輸入程式中用自身的IME(搜狗IME)輸入,然後輸入的內容就即時的傳送到電視裡的程式中了。
遠程IME機制
遠程IME的機制非常easy:做一個特殊的IME,該IME不再通過觸摸軟鍵盤獲得輸入字元。而是通過網路直接從網路的還有一端擷取字元(這個字元能夠是英文。也能夠是中文。隨意語系都能夠),然後將這個字元發送給應用程式。輸入的核心是兩個:InputConnection的commitText和sendKeyEvent兩個介面。例如以下代碼實現:
private void sendText(String text) { if (!isShow()) { Log.d(TAG, "ime is hidden"); return; } final InputConnection ic = getCurrentInputConnection(); if(ic == null) { Log.d(TAG, "ic null"); return; } //將中文等任一語系文本發送給程式 ic.commitText(text, text.length()); } public void sendDownUpKeyEvents(int keyEventCode) { InputConnection ic = getCurrentInputConnection(); if (ic == null) return; long eventTime = SystemClock.uptimeMillis(); //發送delete,backspace刪除字元等特殊輸入,特殊輸入是通過key來實現的哦 ic.sendKeyEvent(new KeyEvent(eventTime, eventTime, KeyEvent.ACTION_DOWN, keyEventCode, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0, KeyEvent.FLAG_SOFT_KEYBOARD|KeyEvent.FLAG_KEEP_TOUCH_MODE)); ic.sendKeyEvent(new KeyEvent(SystemClock.uptimeMillis(), eventTime, KeyEvent.ACTION_UP, keyEventCode, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0, KeyEvent.FLAG_SOFT_KEYBOARD|KeyEvent.FLAG_KEEP_TOUCH_MODE)); }
然後就是代碼的大頭,網路模組:實現區域網路搜尋服務。自己主動串連,網路資料發送。
遠程IME安裝使用及原始碼
以下這個是我做的遠程IME的介面及使用介面
使用者在兩個手機上安裝遠程IME程式,當中一個手機開啟遠程IME應用,另外一個手機將IME選擇為RemoteIme,並點擊裡面的搜尋button。當status變成connected。遠程IME應用就可為遠程IME輸入內容了。
選擇RemoteImeIME配置過程:
1) 在setting裡選擇語言和IME。然後選擇RemoteIme
2) 然後點擊預設。會彈出選擇框,繼續選擇RemoteIme
3) 然後進入任一須要輸入的程式,就可以使用RemoteIme
假設大家想瞭解很多其它。能夠在github找到我這個項目的原始碼:
https://github.com/itleaks/RemoteIme
假設僅僅是測試,能夠直接使用項中的RemoteIme.apk, 該原始碼僅僅是0基礎版本號碼,大家能夠一起改動改進。
後記:
本部落格將在後一篇接著講述--------AndroidIME擴充之外接鍵盤中文IME
/********************************
* 本文來自部落格 “愛踢門”
* 轉載請標明出處:http://blog.csdn.net/itleaks
******************************************/
AndroidIME擴充之遠程IME