ハードウェアキーの長押しを検知する
|タッチパネルの長押しを検知する方法は「タッチパネルのダブルタップや長押しを検出する」で紹介しましたが、
ハードウェアキーも長押しを検知することが可能です。
ハードウェアキーの長押しを検知するにはandroid.view.KeyEvent.Callbackクラスに
定義されているonKeyLongPressメソッドを利用します。
boolean onKeyLongPress (int keyCode, KeyEvent event)
onKeyLongPressメソッドのパラメータ
keyCode : 長押ししていたキーのキーコード
event : 長押ししていたキーのキーイベント
詳しくは続きからご覧下さい。
onKeyLongPressメソッドの使い方ですが、まずonKeyLongPressメソッドをオーバーライドします。
するとハードウェアキーが長押しされることでオーバーライドしたonKeyLongPressメソッドが呼び出されるように
なりますので、長押しされたキーのキーコードに応じて処理を振り分けます。
以下はバックキーと検索キーの長押しに対してToastを表示するサンプルです。
// 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