2

私はやろうとしています:

  1. 実行するTextToSpeech
  2. SpeechRecognizer は、ユーザーが TextToSpeech された単語/フレーズを繰り返すと聞き取りを開始します

しかし、私の問題は、たとえば、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);
}
4

2 に答える 2

2

2 つのスレッドで 2 つのプロセスを実行しています。Thread One を作成して 3 秒間スリープさせsr.startListening(srIntent);、別の UI スレッドで Intent を開始します。したがって、すぐに Intent を開始します。以下に投稿するように、1つのスレッドで両方のプロセスを使用します

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();

}

UI 操作を実行する内部ハンドラ クラスを 1 つ作成する

private Handler mSpeech=new Handler(){
    public void handleMessage(android.os.Message msg) {
         sr.startListening(srIntent);
    }
};
于 2013-07-31T12:59:34.007 に答える
0

run()体の中にあるに違いない

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();
            }
           sr.startListening(srIntent);
        }
    };
    thread.start();

}
于 2013-07-31T12:57:33.793 に答える