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