開発メモ
ユーザー補助のサービスを利用して通知を取得する際にAccessibilityServiceを利用するのが一番簡単に設置することができます。
AccessibilityServiceには最低onAccessibilityEventとonInterruptだけ設置すれば取得することが可能になります。
しかしAndroid4.4以上で利用できる”Ok Google”とマイクにしゃべるだけで音声検索機能が有効になる機能はAccessibilityServiceの設定を少し修正しておかなければなりません。
AccessibilityServiceを設置する際にアクセス制限をかけないと有効にならないんです。
ではその方法とはどのようにしたらいいのでしょう。
答えとしてはfeedbackTypeをFEEDBACK_GENERICにする必要があります。
それにはサービス開始時に設定を施してあげる必要があります。
それを実現するためにはonServiceConnectedをオーバーライドしてあげる必要があります。
具体的には以下の通り
@Override
public void onServiceConnected() {
AccessibilityServiceInfo info = new AccessibilityServiceInfo();
info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED;
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
info.flags = AccessibilityServiceInfo.DEFAULT;
setServiceInfo(info);
}
これをextends AccessibilityServiceしているクラスに加えます。
こうすることによって「通知イベントが発生」かつ「フィードバック限定」で設置することが可能になります。

コメント