我这里有这个代码:
Text-To-Speech("Hello");
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
// Actions to do after 10 seconds
}
}, 10000);
VOICE_RECOGNITION();
这不行,在说“你好”之后,如果我打招呼,语音识别会听到“你好你好”。如何在4秒VOICE_RECOGNITION()开始后延迟?
答案 0 :(得分:2)
如果我理解你的问题,你需要做的是:
try {
Thread.sleep(4000);
} catch (InterruptedException ignored) {}
这将使当前线程休眠4000毫秒(即4秒)。请记住,使用Thread.sleep(xxx)
通常是一种不好的做法,因为它不可靠并且会产生不稳定的代码和结果。我想你假设Text-to-speech("Hello")
将在4秒内结束,这就是你想要这个延迟的原因。但是想象一下,将来你改变文本......或者用其他语言读取它,其中work / phraze超长 - 那么你的代码就会失败。
我宁愿使用界面,而不是使用4/6 /无秒的手动延迟。我将使用方法void onTextToSpeechFinished()
创建一个接口,该接口将在完成后调用。更清洁,更稳定的解决方案。