ソフトキーボードの任意のキーの押下をキャッチしたいです。アクティビティに EditView や TextView は不要です。イベントはアクティビティ内の拡張された View から処理する必要があります。
これを試してみました:
1) onKeyUp(int keyCode, KeyEvent event)
Activity メソッドをオーバーライドします。これはソフトキーボードでは機能せず、いくつかのハードキーボードをキャッチするだけです。
2) を作成しOnKeyListener
、登録済みで機能している を含む を my View に登録しますOnTouchListener
。これはソフトキーボードではまったく機能しません。
3) onKeyUp(int keyCode, KeyEvent event)
View メソッドをオーバーライドします。これは、OnKeyListener を設定しても設定しなくてもまったく機能しません。
4)InputMethodManager
オブジェクトでメソッドを呼び出してshowSoftInput
、それをビューに渡します。これはキーボードを上げるためにも機能しません。実際、toggleSoftInput
; を呼び出す必要があり、キー イベントをキャッチするためにも機能しません。
エミュレータでのみすべてをテストしましたが、それで十分だと思います。キーボードから単純なキーイベントを取得するのがなぜこんなに複雑なのでしょうか?
ベストアンサー1
ハードウェアキーと戻るキーを扱うには、dispatchKeyEvent(KeyEvent event)
あなたのActivity
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
Log.i("key pressed", String.valueOf(event.getKeyCode()));
return super.dispatchKeyEvent(event);
}
上院: 残念ながらソフトキーボードイベントは処理できません(単一キーイベントを処理する)、独自のカスタムキーボードを開発しない限り(方法についてはリンクを参照してください)入力方法の作成)。