android - 为什么它在开始监听之前不休眠 3 秒?

标签 android speech-recognition text-to-speech

我正在尝试做:

  1. 执行TextToSpeech
  2. 当用户重复以下内容时,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/

相关文章:

javascript - 适用于所有浏览器的语音识别 API

audio - 如何在 OS X 上获得实时转录(没有音频文件)?

c# - System.Speech.Synthesis 在 2012 R2 上因高 CPU 而挂起

android - 协调器布局和相对布局问题

java - ArrayAdapter 中带有按钮的自定义 View

java - 我不明白的 TitleView 错误

ffmpeg - 如何使用 Google 的 Cloud Speech-to-Text REST API 转录视频

ios - 使用 google API 或 AVspeech 的文字转语音

android - 如何抑制 TTS.getAvailableLocales() 的警告消息

java - 等于方法崩溃应用程序