AndroidIME擴充之遠程IME

來源:互聯網
上載者:User

標籤: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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.