Activityでハードキーの入力を取得する
2021/01/31
Android
ハードウェアキー
AndroidのActivityでハードウェアキーの入力を取得する方法です。
Activity以外のコンポーネントで取得するには、ユーザー補助サービスの実装[1]をすることで一応実装可能ですが、開発者側も利用側も手軽ではありません。
AccessibilityService経由でハードキーの入力を取得する
環境
- compileSdkVersion 29
- minSdkVersion 21
方法
Activity.dispatchKeyEvent
をoverrideします。
override fun dispatchKeyEvent(event: KeyEvent?): Boolean {
if(event?.keyCode == KeyEvent.KEYCODE_VOLUME_DOWN && event.action == KeyEvent.ACTION_DOWN){
Log.d("TAG", "Detect VOLUME_DOWN")
}
return super.dispatchKeyEvent(event)
}
この例ではハードウェアボリュームキーを押したときのイベントを取得しています。
返却をreturn true
とすると、このActivityでイベントを堰き止めます。今回の例ではスピーカーボリュームの変更が行われなくなります。
取得可能なキーやアクションの一覧は KeyEvent | Android デベロッパー | Android Developers で確認できます。