Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> Android開發教程 >> Android輸入法擴展之遠程輸入法

Android輸入法擴展之遠程輸入法

編輯:Android開發教程

近年來,互聯網電視開始火熱,樂視TV,小米TV,最近愛奇藝也在大肆的招人做愛奇藝電視,當然還有更被關注的蘋果電視。其實,這個趨勢很正常,也很合理,傳統單純的接收電視節目的電視已經太傳統了,是該被革命了。樂視為代表的新一代互聯網電視采取互聯網的營銷方式,不需要實體店,不需要實體工廠,只需方案,服務,網上預約,直接快遞等方式大大降低了成本,同時也可以控制庫存,預防風險。同時他們都堅持硬件不賺錢,服務收費,更看重電視用戶對象這一潛在價值。用戶多了,干啥都方便,當然還有更大的智能家居大概念。

除了蘋果電視,其他無一不是采用Android系統。但是各種互聯網電視說到底它還是電視,不像手機,平板,PC等這些電子產品,用戶離它是有距離的,用戶是沒法直接觸摸屏幕等方式來輸入的,因此Android軟鍵盤方式實在是不夠好的輸入交互方式。對於英語系的國家,這個電視的輸入還好解決,只需通過外接鍵盤直接輸入,但是對於類似中文這種需要轉換的語種來說,就麻煩了。這是因為Android外接鍵盤只能輸入英文字符,同時輸入法又沒法獲取外接鍵盤(只支持觸摸軟鍵盤的字符)的輸入將其轉化為中文。這就讓我想到標題的“遠程輸入法”。

一個很通用的場景就是:電視安裝了愛踢門的遠程輸入法,該輸入法連接上了手機的遠程輸入端,然後用戶在遠程輸入程序中用自身的輸入法(搜狗輸入法)輸入,然後輸入的內容就實時的傳送到電視裡的程序中了。

遠程輸入法機制

遠程輸入法的機制很簡單:做一個特殊的輸入法,該輸入法不再通過觸摸軟鍵盤獲得輸入字符,而是通過網絡直接從網絡的另一端獲取字符(這個字符可以是英文,也可以是中文,任意語系都可以),然後將這個字符發送給應用程序。輸入的核心是兩個: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));  
 }

然後就是代碼的大頭,網絡模塊:實現局域網搜索服務,自動連接,網絡數據發送。

返回欄目頁:http://www.bianceng.cn/OS/extra/

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved