2013-05-03 6 views
-3

Я пытаюсь создать приложение для распознавания речи, где приложение получает голос и отправляет материал. Мне бы хотелось, чтобы метод onEndOfSpeech был вызван, чтобы подождать секунду, а затем сделать все намерение распознавания голоса начать снова.Работа с задержкой в ​​Java

public void onEndOfSpeech() { 
    Log.d("Speech", "onEndOfSpeech"); 

     try { 
      Thread.sleep(3000); 
     } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      mSpeechRecognizer.startListening(mSpeechRecognizerIntent); 
     } 

Не уверен, что я делаю это правильно. Спасибо!

+0

Thread.sleep (3000); не хорошо. Используйте обработчик. – Raghunandan

+0

Лучше запланировать что-то, что произойдет 3000 миллисекунд, а не заморозить всю программу за 3000 миллисекунд. – Patashu

+0

Я хотел бы сделать это Паташу, как бы я его выполнил? –

ответ

1

Вот как это должно быть

try { 
    Thread.sleep(3000); 
    mSpeechRecognizer.startListening(mSpeechRecognizerIntent); 
} catch (InterruptedException e) { 
    // it depends on your app logic what to do with InterruptedException, you can process it or rethrow or restore interrupted flag 
} 
0

Попробуйте этот код

protected boolean _active = true; 
// time to display the splash screen in ms 
protected int _splashTime = 1000; 
Thread splashThread = new Thread() { 
@Override 
public void run() { 
try { 
int waited = 0; 
while(_active && (waited < _splashTime)) { 
sleep(100); 
if(_active) { 
waited += 100; 
} 
} 
} catch(InterruptedException e) { 
    e.printStackTrace(); 
    mSpeechRecognizer.startListening(mSpeechRecognizerIntent); 
}