我試圖實現一個輸入方法服務,接收遠程客戶端發送的意圖,並響應這些發送適當的KeyEvent。如何通過輸入法服務將KeyEvents發送到對話框或微調菜單?
我使用的input method service
這種方法
private void keyDownUp(int keyEventCode)
{
getCurrentInputConnection().sendKeyEvent(
new KeyEvent(KeyEvent.ACTION_DOWN, keyEventCode));
getCurrentInputConnection().sendKeyEvent(
new KeyEvent(KeyEvent.ACTION_UP, keyEventCode));
}
發送KeyEvents
作爲Simple Sofykeyboard Sample
,它工作在家裏,在Activities.
..但它不工作時,對話框或Spinner的菜單在前臺。
事件發送到parent activity behind the Dialog
。
有沒有什麼辦法可以像使用輸入法中的硬鍵一樣發送鍵和控制設備?
更好地解釋什麼我想要做的事:
我有點writng輸入法,允許控制遠程設備。
我在客戶端(桌面pc上的一個Java應用程序)中寫入一個命令(例如「UP」),設備上的服務器使用sendBroadcast()
發送意向信息,並在輸入法得到它,並調用keycode
的keycode
它通常工作,但是當我去一個顯示對話框的應用程序時,keyDownUp
方法不會將鍵盤事件發送到dialog
,例如選擇是或否按鈕,但它始終控制Dialog
後面的activty
。
Here我發現有人跟我同樣的問題...但沒有答案......
我已編輯我的問題,試圖澄清我的問題是什麼。在你的示例中,當我在短信應用程序中打開對話框時,如果我發送命令DOWN爲DPAD_DOWN鍵,它不會使前景中的對話框滾動,但它會發送到後面的活動,消息列表,選擇長時間按下的消息之下的消息,使得無法關閉對話。我試圖調用onKeyDown和onKeyUp,但是它們不能在keyDownUp工作的地方工作。 – shutdown11 2010-04-11 14:50:14
getCurrentInputConnection()總是返回一個帶有顯示對話框的活動的連接,而不是對話框。使用硬鍵代替時,可以在對話框對焦時滾動,所以我想知道如何模擬硬鍵。 – shutdown11 2010-04-11 14:58:20
硬鍵肯定可以通過Instrumentation類來模擬,但需要根植設備。 – 2013-10-23 17:25:01