2012-09-01 211 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