サイト移転のお知らせ:http://techbooster.org/に移転しました

ハードウェアキーの長押しを検知する

3月 27, 2011   //   by kseto   //   デバイス  //  1 Comment

タッチパネルの長押しを検知する方法は「タッチパネルのダブルタップや長押しを検出する」で紹介しましたが、
ハードウェアキーも長押しを検知することが可能です。

ハードウェアキーの長押しを検知するには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);
}

なお、例外としてメニューキーやホームキーは長押しを検知することができません。
上記のサンプルコードをメニューキーやホームキーに適用しても、メニューキーの場合にはソフトウェアキーボード、
ホームキーの場合にはアプリケーションの起動履歴が表示されてしまいますので注意が必要です。

関連する記事:

Sponsored Link

1 Comment

技術書新刊 発売中

アンドロイドアカデミアには、CIやテスト、互換検証など実務に生きるノウハウをあつめています

技術書新刊 発売中

Android Next!はAndroid 7.0に対応したはじめての技術書です!


The Web Explorer 2はCSSの中央寄せやWebAudioなど未来を読み解く一冊です


Revised TypeScript in DefinitelylandはTypeScript 2.0(β)に対応した解説書です。インストールから型定義まで幅広くサポートしています


技術書をかこう!はエンジニアらしい執筆環境を構築、HowTo本です