NotificationListenerService:停止队列所有当前通知?

时间:2017-03-15 11:51:40

标签: android notifications accessibility text-to-speech

我正在开发基于通知的应用,我需要收听来电通知。我已经能够收听来电,短信,邮件等。我不知道如何通过代码收听Whatsapp上朋友的ping或消息。这可以实际完成,但问题是TTS服务继续启动。当用户发送消息时,两次TTS服务运行两次。 PLZ解决了这个问题...

@Override
public void onNotificationPosted(StatusBarNotification sbn) {
    super.onNotificationPosted(sbn);


    TelephonyManager telephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
    int state = telephonyManager.getCallState();

    if (state != TelephonyManager.CALL_STATE_OFFHOOK) {

        String packageName = sbn.getPackageName();

        if (sbn.getNotification().tickerText != null) {

            if (packageName.contains("whatsapp")) {
                whatText = "Whatsapp Notification";
                initTTS(sbn.getNotification().tickerText + "");
            }
        }
    }
}

private void initTTS(String s) {
    text = whatText + " ";

    STD = s + " ";
    tts = new TextToSpeech(this, this);
    tts.setOnUtteranceProgressListener(new UtteranceProgressListener() {
        @Override
        public void onStart(String utteranceId) {

        }

        @Override
        public void onDone(String utteranceId) {
            stopSelf();
        }

        @Override
        public void onError(String utteranceId) {

        }
    });
}
  @Override
public void onInit(int status) {
    if (status != TextToSpeech.ERROR) {
         tts.setLanguage(Locale.US);
         SharedPreferences preferences = getSharedPreferences("SET", MODE_PRIVATE);
        String Demo = preferences.getString("text", text);
        tts.speak(Demo + STD + " ", TextToSpeech.QUEUE_FLUSH, null);
    }
}

0 个答案:

没有答案