t1.speak("Hi sir", TextToSpeech.QUEUE_ADD, null);
onStart();
Blockquote speak 没有运行,它直接跳到 on Start 方法,但是如果我删除 on start 方法,它会运行。我想在它完成讲话后转到 on start 方法,先生。
t1.speak("Hi sir", TextToSpeech.QUEUE_ADD, null);
onStart();
Blockquote speak 没有运行,它直接跳到 on Start 方法,但是如果我删除 on start 方法,它会运行。我想在它完成讲话后转到 on start 方法,先生。
speak 方法是异步的,它会生成一个与已经运行的代码同时运行的新线程,这就是为什么执行不会“暂停”,它只是继续到下一行。
您必须让 t1.speak() 成为包含它的任何方法中的最后一条指令,并且在调用 speak 之前,在您的 t1 上设置一个UtteranceProgressListener ... 并像这样覆盖 onDone() 方法:
@Override
public void onDone(String s) { // this method is called from a background thread...
runOnUiThread(new Runnable() { // ... so this is important :)
@Override
public void run() {
onStart(); // <-------- move your onStart here.
}
});
}
这是一个类似的答案,您可以使用它来获取有关如何设置 UtteranceProgressListener 的完整详细信息。