我正在尝试做:
- 执行
TextToSpeech
- 当用户重复以下内容时,SpeechRecognizer 开始监听 TextToSpeech'd 单词/短语
但我的问题是,例如,如果我通过 TextToSpeech 说“示例”,当 SpeechRecognizer 开始监听时,它还会接收之前的“示例”并添加到用户所说的“示例”中。所以最后,我结束了“示例示例”,这是我不想要的。
代码:
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
item = (String) parent.getItemAtPosition(position);
tts.speak(item, TextToSpeech.QUEUE_FLUSH, null);
Thread thread = new Thread() {
public void run() {
try {
sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
thread.start();
sr.startListening(srIntent);
}
最佳答案
您正在两个线程中执行两个进程。您正在创建线程一并使其休眠 3 秒,然后 sr.startListening(srIntent);
在单独的 UI 线程中启动 Intent。所以它立即启动 Intent。在一个线程中使用两个进程,就像我在下面发布的那样
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
item = (String) parent.getItemAtPosition(position);
tts.speak(item, TextToSpeech.QUEUE_FLUSH, null);
Thread thread = new Thread() {
public void run() {
try {
sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
mSpeech.sendEmptyMessage(0);
}
};
thread.start();
}
创建一个内部Handler类来执行UI操作
private Handler mSpeech=new Handler(){
public void handleMessage(android.os.Message msg) {
sr.startListening(srIntent);
}
};
关于android - 为什么它在开始监听之前不休眠 3 秒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17970615/