Android - キーボードのキーの押下を取得する 質問する

Android - キーボードのキーの押下を取得する 質問する

ソフトキーボードの任意のキーの押下をキャッチしたいです。アクティビティに 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);
}

上院: 残念ながらソフトキーボードイベントは処理できません(単一キーイベントを処理する)、独自のカスタムキーボードを開発しない限り(方法についてはリンクを参照してください)入力方法の作成)。

おすすめ記事