我目前正在模擬一個應用程序,模擬d-pad(上,下,左,右)。問題是,我無法弄清楚如何將這些按鍵發送到其他應用程序。模擬箭頭按鍵在Android中
目前,我正在使用Instrumentation,它在我的應用程序的活動中工作得很好。 這裏是箭頭鍵的片段留下代碼:
new Thread(new Runnable() {
@Override
public void run() {
new Instrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_LEFT);
}
}).start();
這種實現的問題是,由於一個機器人的安全功能,我無法發送按鍵到其他應用程序。 在尋找注射按鍵的不同方法之後,我發現了這個article。但是,在嘗試示例代碼之後,它似乎不起作用。我戳了一下,發現android似乎沒有鍵盤的輸入設備。當我掃描不同的輸入設備時,我得到諸如方向傳感器等東西。下面是我手機上所有輸入設備(T-959 Galaxy S)的圖片。
正如你所看到的,沒有這些設備是鍵盤。我有一種感覺,這是因爲我的手機沒有物理鍵盤。 (柏樹是電容鍵,白羊座是音量按鈕,而mxt224是觸摸屏控制器)
經過多一點研究後,我發現android中的可訪問性API有限制注入事件的能力,但那些只是非常基本的東西,如切換視圖焦點等(AccessibilityNodeInfo)。不過,我有一種感覺,我可以將其擴展爲支持箭頭鍵按下。
所以目前,我很困惑要去哪裏。有沒有人曾經做過這樣的事情?由於Android中的安全功能,似乎簡單的箭頭鍵注入(無其他)非常令人沮喪。所有建議都歡迎。
編輯:我可能不是很清楚,但我很好,只爲根植電話建立此。唯一的要求是,這個應用程序必須在手機上獨立運行,而不必通過OTG連接到任何外部鍵盤,或通過adb連接到計算機。
我是否能夠在不連接到計算機的手機上運行嗎?我是否將它作爲具有su root訪問權限的shell命令運行?這似乎很簡單,但我認爲這仍然取決於輸入設備(我可能是錯的)。我很樂意看到這一點,因爲這聽起來像是我的問題的一個非常簡單的解決方案。 – tincan 2013-03-19 19:15:04
我建議的解決方案需要連接到計算機,因爲我使用的是計算機鍵盤。但您可以通過從android設備分派shell命令來做同樣的事情 – Atrix1987 2013-03-20 03:11:02
DPE LEFT事件的所有設備的keyevent 21是否通用?我會承認是的,因爲它是一個adb命令,但我只是想確定。 – tincan 2013-03-20 19:33:26