0

...ゲームパッドを使用して同様の制御を実装するためにソースを変更する必要があるため。

4

1 に答える 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 に答える