gpt4 book ai didi

java - TextToSpeech.stop() 不起作用

转载 作者:行者123 更新时间:2023-12-01 14:22:39 26 4
gpt4 key购买 nike

我在onUteranceComplete()中连续调用文本转语音speak()方法,当事件发生时。说话方法工作正常,它不断地朗读文本,但我在这段代码中遇到了一个奇怪的问题。 Activity 结束后,我调用textToSpeech.stop()方法,但 talk 方法一直在说话,而且 stop() 似乎根本不起作用。我猜想问题的发生是因为在onUteranceCOmplete()中不断调用speak()。

各位专家怎么看,这个问题的原因是什么?

        @Override
public void onInit(int status) {

if(status != TextToSpeech.ERROR)
{
Toast.makeText(getApplicationContext(), "text to speech created", Toast.LENGTH_SHORT).show();
tts.setLanguage(Locale.US);
tts.setPitch(1.2f);
tts.setSpeechRate(1.0f);

tts.setOnUtteranceCompletedListener(new OnUtteranceCompletedListener() {

@Override
public void onUtteranceCompleted(String arg0) {
// TODO Auto-generated method stub

tts.speak("hello world", TextToSpeech.QUEUE_FLUSH, hash);

}
});
}

@Override
public void onCallStateChanged(int state, final String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
....
x = tts.speak("hello world", TextToSpeech.QUEUE_FLUSH, hash);
}

问候

最佳答案

你应该设置一个类成员标志

private boolean mShouldSpeak = true;  

然后检查 onUtteranceCompleted 中的标志

tts.setOnUtteranceCompletedListener(new OnUtteranceCompletedListener() {

@Override
public void onUtteranceCompleted(String arg0) {
// TODO Auto-generated method stub
if (mShouldSpeak)
{
tts.speak("hello world", TextToSpeech.QUEUE_FLUSH, hash);
}

}
});

当事件完成时,只需将 mShouldSpeak 设置为 false

关于java - TextToSpeech.stop() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17410569/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com