キーボード表示検知3 キャプチャー画像

キーボード表示・非表示検知 その3

キーボード表示・非表示検知 その2に引き続き、最後のキーボード処理の紹介をしたいと思います。

この記事ではキーボードを検知する方法の3つめを紹介します。正常に動作するのはAndroid 4.4(KitKat)のみなので、非推奨の処理となります。

対応Androidバージョン

Android 4.4

処理内容

この処理では、NotificationListenerServiceを利用してキーボードアイコンが通知に表示されたかどうかをチェックすることで、キーボードの表示・非表示判定を取得しています。

表示されたのがキーボードのアイコンかどうかを判定しているのは黄色のマーク部分で、通知に表示されたアイコンのリソースIDがキーボードアイコンのリソースIDと一致しているかを比較しています。

この処理を使用したサンプルプロジェクトをGitHubにて公開しています。

sfapps-jp/Soft-Keyboard-Notification-Monitoring

注意点

NotificationListenerServiceを使えるのはAndroid 4.4からなので、これより前のAndroidバージョンでは使用できません。

また、Android 5.0からはキーボードアイコンを通知ではなく、ナビゲーションバーに表示するようになったため、ナビゲーションバーが表示されているAndroid 5.0以降の端末では使用できません。

開発にあたって

キーボードの表示・非表示の検知機能を作成し始めて最初にできたのがこの処理でした。

キーボードを表示した際に変化する部分で目についたのが、入力方法の選択という通知が通知領域に表示されていることでした。

この通知領域の情報を取得できれば、キーボードの表示判定が取得できそうだと思い作成し始めましたが、Android 4.3以前のAccessibilityServiceによる通知領域の取得処理ではキーボードの情報を取得できなかったため、Android 4.4から実装されたNotificationListenerServiceで試したところ、こちらでは取得できました。

対応Androidバージョンの範囲はとても狭いですが、この処理を発見したことでキーボードの表示・非表示判定を詳しく調べるきっかけとなった処理でした。