2016-12-08 4 views
0

Я использую распознаватель речи по умолчанию для Android. Но вы можете знать, что он запускает звуковой сигнал при запуске распознавателя и когда запускается событие onError(). Звуковой сигнал воспроизводится с Android версии 5.x.Остановка звукового сигнала распознавателя речи google

Мое требование - реализовать непрерывный распознаватель. Поэтому я должен снова начать этот распознаватель. В этой ситуации звуковой сигнал воспроизводится снова и снова. Я попытался найти какое-то решение, как показано ниже:

Отключить звуковой сигнал перед запуском распознавателя и снова включить звук в событииSpeechReady(). С другой стороны, если распознаватель не обнаруживает никакой речи в течение 4/5 секунд, он автоматически вызывает событиеError(), и это событие onError() снова воспроизводит звуковой сигнал. Чтобы решить эту проблему, я остановил распознаватель силой через 3 секунды и вызвал onError() таймером, прежде чем система вызовет это событие onError(). Но когда я закрыл распознаватель силой, система получает здесь исключение и играет шум.

Любой может дать любое решение о том, как я могу остановить этот звуковой сигнал, а также шум.

Заранее спасибо.

ответ

0

Используйте следующий код перед началом вашей речи

AudioManager amanager=(AudioManager)getSystemService(Context.AUDIO_SERVICE); 
amanager.setStreamMute(AudioManager.STREAM_NOTIFICATION, true); 
amanager.setStreamMute(AudioManager.STREAM_ALARM, true); 
amanager.setStreamMute(AudioManager.STREAM_MUSIC, true); 
amanager.setStreamMute(AudioManager.STREAM_RING, true); 
amanager.setStreamMute(AudioManager.STREAM_SYSTEM, true); 

Используйте следующий код после получения результата

AudioManager amanager=(AudioManager)getSystemService(Context.AUDIO_SERVICE); 

amanager.setStreamMute(AudioManager.STREAM_NOTIFICATION, false); 
amanager.setStreamMute(AudioManager.STREAM_ALARM, false); 
amanager.setStreamMute(AudioManager.STREAM_MUSIC, false); 
amanager.setStreamMute(AudioManager.STREAM_RING, false); 
amanager.setStreamMute(AudioManager.STREAM_SYSTEM, false);