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