ソフトキーボードの任意のキーの押下をキャッチしたい。アクティビティにEditViewまたはTextViewは必要ありません。イベントは、アクティビティ内の拡張ビューから処理する必要があります。
私はこれを試しました:
onKeyUp(int keyCode, KeyEvent event)1) Activityメソッドをオーバーライドします。これはソフトキーボードでは機能しません。ハードキーボードをほとんどキャッチしません。
2)自分を作成OnKeyListenerし、登録済みで動作中のを含むビューに登録しますOnTouchListener。これは、ソフトキーボードではまったく機能しません。
onKeyUp(int keyCode, KeyEvent event)3) Viewメソッドをオーバーライドします。OnKeyListenerを設定した場合も、設定しなかった場合も、これはまったく機能しません。
4)InputMethodManagerオブジェクトを使用してメソッドを呼び出しshowSoftInput、ビューを渡します。これはキーボードを上げるためにも機能しません、確かに私は呼び出す必要がありますtoggleSoftInput; また、重要なイベントをキャッチすることもできません。
私はすべてエミュレーターでのみテストしましたが、それで十分だと思います。キーボードから単純なキーイベントを取得するのがとても複雑なのはなぜですか?