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