アプリより先にフレームワーク側でキー処理を行う

Androidのフレームワーク開発を行っているとアプリより先に特定のキーイベントを取得し処理を行いたい場合があります。
今回はそんな時に改造する場所を紹介します。

まずAndroidキーイベント処理は大まかに説明します。
Kernelで発生するキーイベントをEventHubが監視し、イベント発生時にInputDispatcher、フレームワーク、アプリの順にイベントが通知されていきます。

上記の流れの内フレームワークではPhoneWindowManagerのinterceptKeyBeforeDispatching()というメソッドでアプリにキーイベントを通知するか判定する処理を行っているため、今回のようなアプリより先にフレームワーク側でキーを処理したい場合ここを改造します。

interceptKeyBeforeDispatching()でキーを処理しアプリ側にキーイベントを伝えたくない場合はreturnで-1を返すとアプリに伝わらなくなります。
interceptKeyBeforeDispatching()でホームキーに関する処理も行っているので改造する際は参考にすると良いかと思われます。
簡単ですが今回はここまでになります。