どうも。どっことです。今回はキーイベントを発行する実装方法を解説します。
キーイベントを発行する
例えば方向キーのキーイベントを発行する場合、以下をつかいます。
- 方向キー下: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に思い入れしなければ、非常に簡単ですね。
まとめ
今回はキーイベントを発行する実装方法を解説しました。カスタムキーボードなどに役立てていただければと思います。