TextToSpeech tts = new TextToSpeech(context, this);
tts.speak(text, TextToSpeech.QUEUE_ADD, null);
如何知道讲话何时完成,因为停止讲话时我需要执行一些额外的代码。但我有问题,因为我不知道如何检查讲话是否完成了谈话。TextToSpeech如何知道讲话结束时是否正在讲话
有没有任何选项可以检查?
TextToSpeech tts = new TextToSpeech(context, this);
tts.speak(text, TextToSpeech.QUEUE_ADD, null);
如何知道讲话何时完成,因为停止讲话时我需要执行一些额外的代码。但我有问题,因为我不知道如何检查讲话是否完成了谈话。TextToSpeech如何知道讲话结束时是否正在讲话
有没有任何选项可以检查?
是的,有两个监听器:
我没有用过UtteranceProgressListener,但OnUtte ranceCompletedListener非常特别。这里有两个提示:
onInit()
回调中,永远不会。params
传递给speak()
并附带有效的KEY_PARAM_UTTERANCE_ID
,否则该侦听器将不会被调用。至于据我所知这里没有听众,但我们有一种叫做isSpeaking()
的方法来检查TTS引擎是否忙于说话。所以,你可以采取这种方法的帮助下检查一下说话或不
public boolean isDoneSpeaking() {
if(!mTts.isSpeaking())
{
return true;
}
else
{
return false;
}
}
这是一种使用if(!mTts.isSpeaking())自身的复杂方法。 – Sam
在课堂外使用时非常有用,因此您不必引用TTS对象。 – shreks7
好的,如果你想保护'mTts',这将起作用,但是你可以简化这个方法到'return!mTts.isSpeaking()'。我自己研究了这个问题,并找到了一个在合成器完成后调用的监听器。 – Sam