どうも。どっことです。今回はキーイベントを発行する実装方法を解説します。
キーイベントを発行する
例えば方向キーのキーイベントを発行する場合、以下をつかいます。
- 方向キー下:KEYCODE_DPAD_DOWN
- 方向キー上:KEYCODE_DPAD_UP
KeyEvent
を生成して、dispatchKeyEvent
で投げるだけ。これだけです。
dispatchKeyEvent(KeyEvent(ACTION_KEY_DOWN, KEYCODE_DPAD_UP))
気をつけないといけないのは、KeyEvent
コンストラクタに渡している第一引数には
ACTION_KEY_DOWN
を指定することです。
そもそもACTION_KEY_DOWN
はキー開始(画面やキーが押され始めた)、ACTION_KEY_UP
はタッチ終了(画面やキーから離れた)を表すイベントですが、第一引数にACTION_KEY_UP
を指定しても、OS側で制御してくれません。というのもOSからしてみれば
「押されてないのに離れたとか何事!?怖いから無視しとこ…」
という形に整理されていそうだからです。そのため、どうしてもACTION_KEY_UP
でやりたかったら、ACTION_KEY_DOWN
によりキーが押され始めたイベントも一緒に発行する必要があります。(どれだけ頑張る必要があるかは知らない…)ACTION_KEY_UP
に思い入れしなければ、非常に簡単ですね。
まとめ
今回はキーイベントを発行する実装方法を解説しました。カスタムキーボードなどに役立てていただければと思います。