之前曾有人问过这个问题,但似乎没人能解决:Muting SpeechRecognizer's beep sound

尽管如此,我仍然想知道是否有人知道如何使SpeechRecognizer的蜂鸣声静音?

我创建了SpeechRecognizer对象:private SpeechRecognizer sr = SpeechRecognizer.createSpeechRecognizer(this);

然后在我的类里面,我像这样实例化了SpeechRecognizer

sr.setRecognitionListener(new listener());
Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
i.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
        RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
i.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getApplication()
        .getClass().getName());
i.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 6);
i.putExtra(RecognizerIntent.EXTRA_PROMPT, "");
i.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS, 7000);
sr.startListening(i);

有什么好主意的人吗?我研究可以创建一个AudioManager对象(AudioManager mAudioManager),然后使用setStreamSolo()将声音静音。但是我不确定如何实现这一点。我将其添加到了SpeechRecognizer的实例化代码中,没有任何 react 。这是我类应该调用我的东西吗?
mAudioManager.setStreamSolo(AudioManager.STREAM_VOICE_CALL, true);

先感谢您。

最佳答案

抱歉,我没有评论。但是我想帮忙。

你见过这个吗:

Continues Speech Recognition beep sound after Google Search update

Is it possible to turn off the silent mode programmatically in android?

Mute the global sound in Android

在我看来,代码因Android版本而异-如第一个链接中所述, Google将'beep'的输出切换为媒体流

我猜这些问题之一将会解决。如果是这样,请发表您的所作所为,就像您所说的那样,许多人似乎都遇到了问题。

我的猜测是:

//mute audio

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


//unmute audio

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

我想象来自见证应用程序用户的此答案将起作用。归功于:@WitnessApplications

同样,在您开始Listening(i)之前,它的范围将是

10-03 00:22