2012-09-01 101 views
2
TextToSpeech tts = new TextToSpeech(context, this); 
tts.speak(text, TextToSpeech.QUEUE_ADD, null); 

如何知道講話何時完成,因爲停止講話時我需要執行一些額外的代碼。但我有問題,因爲我不知道如何檢查講話是否完成了談話。TextToSpeech如何知道講話結束時是否正在講話

有沒有任何選項可以檢查?

回答

7

是的,有兩個監聽器:


我沒有用過UtteranceProgressListener,但OnUtte ranceCompletedListener非常特別。這裏有兩個提示:

  • 將此監聽器設置在onInit()回調中,永遠不會。
  • 您必須將第三個參數params傳遞給speak()並附帶有效的KEY_PARAM_UTTERANCE_ID,否則該偵聽器將不會被調用。
2

至於據我所知這裏沒有聽衆,但我們有一種叫做isSpeaking()的方法來檢查TTS引擎是否忙於說話。所以,你可以採取這種方法的幫助下檢查一下說話或不

0
public boolean isDoneSpeaking() { 
        if(!mTts.isSpeaking()) 
       { 
        return true; 
       } 
       else 
       { 
        return false; 
       } 

      } 
+0

這是一種使用if(!mTts.isSpeaking())自身的複雜方法。 – Sam

+0

在課堂外使用時非常有用,因此您不必引用TTS對象。 – shreks7

+0

好的,如果你想保護'mTts',這將起作用,但是你可以簡化這個方法到'return!mTts.isSpeaking()'。我自己研究了這個問題,並找到了一個在合成器完成後調用的監聽器。 – Sam