2013-11-02 10 views
5

私は電話のステータスバーにすべての通知(新しいメッセージや不在着信のような)を表示するアプリケーションに取り組んでいます。調査して、アンドロイドでこれを行う唯一の方法はアクセシビリティサービスを作成することだということを知りました。だから私はアクセシビリティサービスでAccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGEDを​​取得して同じことをしました。
は、ここに私のonServiceConnected()メソッドである:これは、働いているアンドロイドのアクセシビリティサービスのさまざまなフィードバックタイプの意味ですか?

public void onServiceConnected(){ 
    if (isInit) { 
     return; 
    } 
    AccessibilityServiceInfo info = new AccessibilityServiceInfo(); 
    info.eventTypes = AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED; 
    info.feedbackType = AccessibilityServiceInfo.FEEDBACK_SPOKEN; 
    setServiceInfo(info); 
    isInit = true; 
} 

が、まさに私が希望していません。実際にはステータスバーにはない多くの通知が表示され、おそらく私が望むバックグラウンドアプリによって生成されています。リアルタイムでもない。アプリが開いている間ではなく、アプリを再オープンしたときにのみ更新されます。さらに、私が設定でサービスを開始するとすぐに、私の電話(銀河のメモ)がすべてのことを話し始める。それがバグかコード内の問題かどうかは不明です。
問題がどこにあるかはわかりませんが、フィードバックタイプになると思います。私は多くを試しましたが、どこのサービスでもさまざまなフィードバックタイプの意味を見つけることができませんでした。

FEEDBACK_AUDIBLE 
FEEDBACK_HAPTIC 
FEEDBACK_AUDIBLE 
FEEDBACK_VISUAL 
FEEDBACK_GENERIC 

これらのフィードバックタイプの意味を教えてください。フィードバックタイプを変更すると、別の通知が表示されますか?私が間違った方向に向いていると信じているなら、私はこれらの問題を解決するために私ができることを教えてください。私はいくつかの重要な情報を提供することを忘れている場合は、私は知っている。

どんな種類のヘルプが本当に感謝します。

答えて

1

私はあなたのすべての質問に対する回答はありませんが、何かを手伝うことができます。あなたが言ったように、あなたはステータスバーの通知だけを望み、トーストやすべてのものは望まない。そのために、あなたのサービスで次のコードを試すことができます。私はそれがあなたのために働く願ってい

info.notificationTimeout=100; 

public void onAccessibilityEvent(AccessibilityEvent event) { 
    final int eventType = event.getEventType(); 
    if (eventType == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED) { 
     Parcelable parcelable = event.getParcelableData(); 

     if(parcelable instanceof Notification){ 
      // statusbar notification 
      List<CharSequence> messages = event.getText(); 
      if (messages.size() > 0) { 
       // here you can do whatever you want with the notification. 
       //Log.d(tag, "Saved event"); 
      } 
     } 
    } 
} 

はまた、このようなあなたのonServiceConnectedでタイムアウトを設定します。

+0

ステータスバーの通知を取得するのに役立ちました。答えてくれてありがとう。今直面している大きな問題は、私が前に述べたように私の話す電話です。私はそのアンドロイドのバグだと思う。あなたが私を助けることができれば、本当に感謝しています。 – Anjani

+0

アクセシビリティ設定でTalkBackのアクセシビリティサービスを切り替えたような音ですか? – tommed

+0

あなたのコードは役に立ちましたが、私はここで問題に直面しています。このコードでも解決できませんでした。私が直面しているのは、通知がステータスバーに表示されたときです。私の 'onAccessibilityEvent(AccessibilityEvent)'メソッドは2回呼び出され、多くのデバイスでチェックされています。それは2回呼び出されます。したがって、 'onAccessibilityEvent(AccessibilityEvent)'で何をしても、これによって2回繰り返されます。誰かが私にこれを解決するのを助けることができる? –

関連する問題