Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使语音识别器的嘟嘟声静音?_Android_Audio_Voice Recognition - Fatal编程技术网

Android 如何使语音识别器的嘟嘟声静音?

Android 如何使语音识别器的嘟嘟声静音?,android,audio,voice-recognition,Android,Audio,Voice Recognition,以前有人问过这个问题,但似乎没有人有解决办法: 尽管如此,我还是想知道是否有人知道如何使SpeechRecognitor的嘟嘟声静音 我创建speechRecognizer对象:private speechRecognizer sr=speechRecognizer.createSpeechRecognizer(this) 然后在我的类中,我实例化了SpeechRecognitor,如下所示 sr.setRecognitionListener(new listener()); Intent i

以前有人问过这个问题,但似乎没有人有解决办法:

尽管如此,我还是想知道是否有人知道如何使SpeechRecognitor的嘟嘟声静音

我创建speechRecognizer对象:private speechRecognizer sr=speechRecognizer.createSpeechRecognizer(this)

然后在我的类中,我实例化了SpeechRecognitor,如下所示

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(),我可以使声音静音。但我不知道如何实现这一点。我将它添加到SpeechRecognitor的实例化代码中,但什么也没发生。这是我应该在主课上打电话给你的吗

mAudioManager.setStreamSolo(AudioManager.STREAM_VOICE_CALL, true);

提前谢谢。

啊,我会发表评论,但我没有代表。不过我想提供帮助

你见过这个吗

在我看来,根据android版本的不同,代码也有所不同——正如第一个链接中所述,谷歌将“嘟嘟声”的输出切换到了媒体流

我猜其中一个问题会有解决办法。如果是这样的话,请把你做过的事情贴出来,因为你说很多人似乎都有这个问题

我的猜测是:

//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);
我想这个来自Witness应用程序用户的答案会起作用。归功于:@WitnessApplications


在你开始听之前,这个范围也将是(i)

使用Mark提供的上述解决方案,您将发生具有以下描述的崩溃:

Failure delivering result ResultInfo{who=@android:requestPermissions:, request=65736, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activity java.lang.SecurityException: Not allowed to change Do Not Disturb state
如果您只想将语音识别器的嘟嘟声静音,只需将
AudioManager.STREAM\u MUSIC
静音即可

在科特林,对我来说是这样的:

object AudioUtils {

    @JvmStatic fun muteAudio(shouldMute: Boolean, context: Context)
    {
        val audioManager: AudioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
        val muteValue = if (shouldMute) AudioManager.ADJUST_MUTE else AudioManager.ADJUST_UNMUTE
        audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, muteValue, 0)
    }

}

即使是我也觉得很烦人,尤其是当你的应用程序在后台运行的时候

以下是我如何在JAVA中解决此问题的:

AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);           
audio.adjustVolume(AudioManager.ADJUST_MUTE,AudioManager.FLAG_SHOW_UI);
现在,这会使活动流静音,大多数情况下(99/100),它会变成音乐流。所以基本上它会静音,然后嘟嘟声消失

在我的例子中,我已经添加了一个事件来根据我的情绪执行此操作,所以我会不时地在调整静音和调整静音之间切换。到目前为止,它对我有效

但即使是我也在寻找一个更好的解决方案,它只会静音嘟嘟声,而不是整个流

希望这能帮助一些人

编辑:我找到了一个比这更好的方法,它总是使音乐流静音

AudioManager audio = (AudioManager) activity.getSystemService(Context.AUDIO_SERVICE);
audio.setStreamVolume(AudioManager.STREAM_MUSIC, 0,  AudioManager.FLAG_SHOW_UI);
要取消静音,请执行以下操作:

audio.setStreamVolume(AudioManager.STREAM_MUSIC, audio.getStreamMaxVolume(AudioManager.STREAM_MUSIC), AudioManager.FLAG_SHOW_UI);

谢谢,我会尝试一下。我认为将STREAM_音乐和STREAM_系统静音就足够了(因为API级别为23,所以您应该使用AudioManager.setStreamVolume通过保存流的先前状态使其静音,以便在您想要取消静音时将其重置为原始值)Massimo,您是对的。我还要补充一点,当你玩setStreamMute时要非常小心,它可能会在这种模式下锁定手机,一定要正确地重新发布它。由于
setStreamMute
现在已不推荐使用,我们可以使用
amanager.adjustStreamVolume(AudioManager.STREAM\u通知,AudioManager.adjustu MUTE,0)
amanager.adjustStreamVolume(AudioManager.STREAM\u通知,AudioManager.ADJUST\u切换\u静音,0)我必须做我在下面链接上做的事情:requires API level 23