編輯: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/
先決條件在本文中,我們將創建一個在 Android 設備上運行的移動應用程序。您將需 要安裝 Android SDK;本文使用 V1.5 SDK。應用程序代碼將用Scal
Activity表示一個屏幕, 至少包含一個處理應用程序的主界面屏幕, 可以由多個fragments組成.創建一個Activity, 需要繼承一個Activity類, 首
Google已經提供了你正在使用的三個Nexus設備之一的系統更新,我們高興的是,Nexus 4和10的Android 4.2 OTA更新也開始推出了。此次的升級包括了&
一.准備1.什麼是MATEclipse提供的一個內存分析工具。它是一個功能豐富的 JAVA 堆轉儲文件分析工具,可以幫助你發現內存漏洞和減少內存消耗。android st