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 で確認できます。

参考

Activity  |  Android デベロッパー  |  Android Developers

KeyEvent  |  Android デベロッパー  |  Android Developers

© 2019-2022 hassakulab.com, built with Gatsby