...ゲームパッドを使用して同様の制御を実装するためにソースを変更する必要があるため。
質問する
986 次
1 に答える
1
Androidには、さまざまな種類のユーザー入力イベントを記述するMotionEventクラスとKeyEventクラスがあります。そして、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というパイプを作成して、イベントをターゲットウィンドウにディスパッチします。
于 2013-04-02T04:19:18.390 に答える