次のエントリ: ソースからnkfインストール [cygwin]
ボリューム変更ハードキーのハンドリング
2011-02-17-2 / カテゴリ: [Android] / [permlink]
動作確認用アプリなんかで手抜きをしたい^a^k上下スクロールとかズームイン/アウトなんかにキー操作を割り当てしたい場合に。
標準だと「押す:ボリューム変更&UI表示 / 離す:通知音を鳴らす」という動作のため、KEYCODE_VOLUME_UPとKEYCODE_VOLUME_DOWNの両方をフックする必要がある。
というわけで、こんな感じ。
Androidでキー長押しはACTION_DOWNがコールバックされまくるんだな。
参考
キーイベントに応答するには - 逆引きAndroid入門
ハードキーフックの方法 - 明日の鍵
標準だと「押す:ボリューム変更&UI表示 / 離す:通知音を鳴らす」という動作のため、KEYCODE_VOLUME_UPとKEYCODE_VOLUME_DOWNの両方をフックする必要がある。
というわけで、こんな感じ。
@Override public boolean dispatchKeyEvent(KeyEvent event) { switch (event.getAction()) { case KeyEvent.ACTION_DOWN: switch (event.getKeyCode()) { case KeyEvent.KEYCODE_VOLUME_UP: // ここにボリュームupが押されたときに走らせたい処理 return true; case KeyEvent.KEYCODE_VOLUME_DOWN: // ここにボリュームdownが押されたときに走らせたい処理 return true; default: break; } break; case KeyEvent.ACTION_UP: switch (event.getKeyCode()) { case KeyEvent.KEYCODE_VOLUME_UP: case KeyEvent.KEYCODE_VOLUME_DOWN: // キーが離された場合はイベントを捨てる return true; default: break; } break; default: break; } return super.dispatchKeyEvent(event); }
Androidでキー長押しはACTION_DOWNがコールバックされまくるんだな。
参考
キーイベントに応答するには - 逆引きAndroid入門
ハードキーフックの方法 - 明日の鍵
次のエントリ: ソースからnkfインストール [cygwin]
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
最終更新時間: 2013-05-02 16:12