我有一个测试应用程序,它以连续的方式使用Google语音,并且每次调用Google识别服务时都会发出哔声。我试图摆脱哔哔声。我已经读过静音音乐流的线程,但这对我不起作用。
我正在尝试找到beep文件位置,以便我可以从系统中删除它。我跟着this线程,但我在5.0系统文件中看不到该文件。
答案 0 :(得分:5)
我发现静音哔声识别的唯一解决方案是:
audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audio.setStreamVolume(AudioManager.STREAM_MUSIC, 0, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
在保存音量之前,例如:
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
current_volume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
要返回以恢复音量级别,例如tapeworms:
audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audio.setStreamVolume(AudioManager.STREAM_MUSIC, audio.getStreamMaxVolume(AudioManager.STREAM_MUSIC),
AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
我希望它对你有所帮助
答案 1 :(得分:5)
假设您不想将所有流静音,因为您有兴趣播放自己的声音,这可能是您的解决方案:使用Audio Focus API。
所以你会有这样的事情:
AudioManager am = mContext.getSystemService(Context.AUDIO_SERVICE);
...
// Request audio focus for playback
int result = am.requestAudioFocus(afChangeListener,
// Use the music stream.
AudioManager.STREAM_MUSIC,
// Request permanent focus.
AudioManager.AUDIOFOCUS_GAIN);
if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
am.registerMediaButtonEventReceiver(RemoteControlReceiver);
// Play your own sound (or play silence)
}
am.abandonAudioFocus(afChangeListener);
我没有测试过,Google App(发出哔哔声)是否符合此请求,但通常情况下它应该有效,值得一试。
另一种选择是直接静音来自Google App的所有声音(包括Google语音识别哔声)。这种方法的优点是不会干扰任何其他流式音频。以下是更详细的链接。但请注意,这需要root访问权限: https://android.stackexchange.com/questions/128588/how-do-i-disable-the-google-voice-typing-voice-search-ding-sound
答案 2 :(得分:2)
您可以使用音频管理器控制声音
AudioManager audioManager=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
开始识别电话
之前 audioManager.setStreamMute(AudioManager.STREAM_MUSIC, true);
并在识别完成后 调用
audioManager.setStreamMute(AudioManager.STREAM_MUSIC, false);
答案 3 :(得分:0)
我发现另一个解决方案对我来说很好。我将媒体播放器的音频流设置为另一个流,因此我可以将音乐流静音。我希望这也有助于其他人。
afd = context.getResources().openRawResourceFd(R.raw.duduuudududu2);
mp.reset();
mp.setAudioStreamType(AudioManager.STREAM_ALARM);
myAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,0,0);
try
{
mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getDeclaredLength());
mp.prepare();
}
catch (IOException e)
{
e.printStackTrace();
}
mp.start();