t1.speak("Hi sir", TextToSpeech.QUEUE_ADD, null);
onStart();
Blockquote 语音没有运行,它直接跳到on Start方法,但是如果我删除on start方法,它将运行。一旦您好,先生,我想转到on start方法。
答案 0 :(得分:0)
speak方法是异步的,它会生成一个新线程,该线程同时与已经运行的代码同时运行,因此这就是为什么执行不会“暂停”并且只是继续到下一行。
>在包含语音的任何方法中,您都必须使t1.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.
}
});
}
这里是similar answer,可用于获取有关如何设置UtteranceProgressListener的完整详细信息。