0
...因爲我需要修改源代碼以使用遊戲手柄來實現類似的控制。Android來源:哪個類將原始觸摸輸入或鼠標輸入轉化爲實際輸入/導航?
...因爲我需要修改源代碼以使用遊戲手柄來實現類似的控制。Android來源:哪個類將原始觸摸輸入或鼠標輸入轉化爲實際輸入/導航?
有一個MotionEvent類和一個KeyEvent類描述Android中的多種用戶輸入事件。 InputManagerService將負責生成這些事件。
例如,如果我需要爲android生成滑動事件。我可以簡單地得到一個MotionEvent,然後通過InputManagerService將它注入到android。
MotionEvent event = MotionEvent.obtain(when, when, action, x, y, pressure, DEFAULT_SIZE,DEFAULT_META_STATE, DEFAULT_PRECISION_X, DEFAULT_PRECISION_Y, DEFAULT_DEVICE_ID,DEFAULT_EDGE_FLAGS);
event.setSource(inputSource);
InputManager.getInstance().injectInputEvent(event,InputManager.INJECT_INPUT_EVENT_MODE_WAIT_FOR_FINISH);
其實我從Input.java此源代碼,這也說明如何截獲用戶輸入到Android其他例子。
然後移動我們的眼睛在InputManagerService上。 injectInputEvent是一個本地方法,它最終依靠InputDispatcher排隊事件並分派它們。然後它將在Window和InputManager之間創建一個名爲InputChannel的管道,以將事件分派到目標窗口。
injectInputEvent()是平臺應用程序可用的東西,因爲它們是作爲AOSP代碼的一部分構建的。由於安全原因,api對於sdk應用程序是隱藏的。 – videoguy 2014-07-11 16:44:49