ハードウェアキーの長押しを検知する
|タッチパネルの長押しを検知する方法は「タッチパネルのダブルタップや長押しを検出する」で紹介しましたが、
ハードウェアキーも長押しを検知することが可能です。
ハードウェアキーの長押しを検知するにはandroid.view.KeyEvent.Callbackクラスに
定義されているonKeyLongPressメソッドを利用します。
1 | boolean onKeyLongPress ( int keyCode, KeyEvent event) |
onKeyLongPressメソッドのパラメータ
keyCode : 長押ししていたキーのキーコード
event : 長押ししていたキーのキーイベント
詳しくは続きからご覧下さい。
onKeyLongPressメソッドの使い方ですが、まずonKeyLongPressメソッドをオーバーライドします。
するとハードウェアキーが長押しされることでオーバーライドしたonKeyLongPressメソッドが呼び出されるように
なりますので、長押しされたキーのキーコードに応じて処理を振り分けます。
以下はバックキーと検索キーの長押しに対してToastを表示するサンプルです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | // onKeyLongPressメソッドをオーバーライドする @Override public boolean onKeyLongPress( int keyCode, KeyEvent event) { // バックキーの長押しに対する処理 if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { Toast.makeText( this , "バックキーが長押しされました!" , Toast.LENGTH_SHORT ).show(); return true ; // 検索キーの長押しに対する処理 } else if (event.getKeyCode() == KeyEvent.KEYCODE_SEARCH) { Toast.makeText( this , "検索キーが長押しされました!" , Toast.LENGTH_SHORT ).show(); return true ; } // バックキー、検索キー以外の長押しはスルー return super .onKeyLongPress(keyCode, event); } |
なお、例外としてメニューキーやホームキーは長押しを検知することができません。
上記のサンプルコードをメニューキーやホームキーに適用しても、メニューキーの場合にはソフトウェアキーボード、
ホームキーの場合にはアプリケーションの起動履歴が表示されてしまいますので注意が必要です。
One Comment