android 如何将SpeechRecognizer的蜂鸣音静音?

unguejic  于 2024-01-04  发布在  Android
关注(0)|答案(4)|浏览(191)

以前也有人问过这个问题,但似乎没有人有解决方案:Muting SpeechRecognizer's beep sound
尽管如此,我还是想知道是否有人知道如何静音语音识别器的哔哔声?
我创建speechRecognizer对象:private SpeechRecognizer sr = SpeechRecognizer. SpeechRecognizer(this);
在我的课上,我示例化了语音识别器,

  1. sr.setRecognitionListener(new listener());
  2. Intent i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
  3. i.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
  4. RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
  5. i.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getApplication()
  6. .getClass().getName());
  7. i.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 6);
  8. i.putExtra(RecognizerIntent.EXTRA_PROMPT, "");
  9. i.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS, 7000);
  10. sr.startListening(i);

字符串
有人有什么好主意吗?我研究了一下,我可以创建一个AudioManager(AudioManager mAudioManager)的对象,然后使用setStreamSolo(),我可以静音。但我不确定如何实现这一点。我将它添加到我的speechRecognizer示例化代码中,但没有发生任何事情。这是我应该从我的主类调用的东西吗?

  1. mAudioManager.setStreamSolo(AudioManager.STREAM_VOICE_CALL, true);


先谢谢你了。

dwthyt8l

dwthyt8l1#

啊,我会评论,但我没有代表。但我想帮助。
你看过这个吗:
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版本-如第一个链接中所述,谷歌切换输出的'哔声'的媒体流
我猜其中一个问题会有解决方案。如果是这样,请张贴你所做的,因为你说,许多人似乎有这个问题。
我的猜测是:

  1. //mute audio
  2. AudioManager amanager=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
  3. amanager.setStreamMute(AudioManager.STREAM_NOTIFICATION, true);
  4. amanager.setStreamMute(AudioManager.STREAM_ALARM, true);
  5. amanager.setStreamMute(AudioManager.STREAM_MUSIC, true);
  6. amanager.setStreamMute(AudioManager.STREAM_RING, true);
  7. amanager.setStreamMute(AudioManager.STREAM_SYSTEM, true);
  8. //unmute audio
  9. AudioManager amanager=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
  10. amanager.setStreamMute(AudioManager.STREAM_NOTIFICATION, false);
  11. amanager.setStreamMute(AudioManager.STREAM_ALARM, false);
  12. amanager.setStreamMute(AudioManager.STREAM_MUSIC, false);
  13. amanager.setStreamMute(AudioManager.STREAM_RING, false);
  14. amanager.setStreamMute(AudioManager.STREAM_SYSTEM, false);

字符串
我想这个来自Witness应用程序用户的答案会起作用。
同样,在你开始Listening(i)之前,它的作用域是**;**

展开查看全部
uemypmqf

uemypmqf2#

即使是我也觉得很烦人,尤其是当你的应用程序在后台运行时。
下面是我在JAVA中如何处理它的:

  1. AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
  2. audio.adjustVolume(AudioManager.ADJUST_MUTE,AudioManager.FLAG_SHOW_UI);

字符串
现在这个静音活动流,大多数时候(99/100)它原来是音乐流。所以基本上它静音,然后哔声消失。
在我的例子中,我已经添加了一个事件来根据我的情绪来做这件事,所以我经常在ADJUST_UNMUTE和ADJUST_MUTE之间切换。
但即使是我也在寻找一个更好的解决方案,它只会静音哔哔声,而不是整个流。
希望这对某人有帮助。
编辑:我发现了一个比这更好的方法,它总是静音音乐流。

  1. AudioManager audio = (AudioManager) activity.getSystemService(Context.AUDIO_SERVICE);
  2. audio.setStreamVolume(AudioManager.STREAM_MUSIC, 0, AudioManager.FLAG_SHOW_UI);


要取消静音,请执行:

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

展开查看全部
8ftvxx2r

8ftvxx2r3#

使用Mark的上述解决方案,您将遇到以下描述的崩溃:

  1. 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_MUSIC
在Kotlin中,它看起来像这样:

  1. object AudioUtils {
  2. @JvmStatic fun muteAudio(shouldMute: Boolean, context: Context)
  3. {
  4. val audioManager: AudioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
  5. val muteValue = if (shouldMute) AudioManager.ADJUST_MUTE else AudioManager.ADJUST_UNMUTE
  6. audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, muteValue, 0)
  7. }
  8. }

展开查看全部
krcsximq

krcsximq4#

为了公众利益,我想发布一个更新到这个线程.今年是2023.我无法找到任何方法尚未添加,将抑制这种可怕的哔哔声.然而,它可以被抑制,正如其他人所指出的静音通知流.(请注意,这似乎是不同于在一些旧的答案提到这个问题.)我实现的效果,因此:

  1. audioManager = (AudioManager) getReactApplicationContext().getSystemService(Context.AUDIO_SERVICE);
  2. // to mute:
  3. priorStreamVolume = audioManager.getStreamVolume(
  4. AudioManager.STREAM_NOTIFICATION
  5. );
  6. audioManager.setStreamVolume(
  7. AudioManager.STREAM_NOTIFICATION,
  8. 0,
  9. AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE
  10. );
  11. // to unmute:
  12. audioManager.setStreamVolume(
  13. AudioManager.STREAM_NOTIFICATION,
  14. priorStreamVolume,
  15. AudioManager.FLAG_ALLOW_RINGER_MODES
  16. );

字符串
我使用的标志可能与您自己的情况有关,也可能无关。

展开查看全部

相关问题