将 Google 语音识别提示音静音
Muting the Google voice recognition beep sound
我有一个持续使用 Google 语音的测试应用程序,它会在每次调用 Google 识别服务时播放提示音。我正在尝试摆脱哔声。我已经阅读了有关将音乐流静音的帖子,但这对我不起作用。
我正在尝试找到哔声文件的位置,这样我就可以直接将其从系统中删除。我关注了 this 帖子,但是我在 5.0 系统文件中看不到该文件。
我找到的唯一使哔声识别静音的解决方案是:
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);
要return恢复音量等级,如蛔虫:
audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audio.setStreamVolume(AudioManager.STREAM_MUSIC, audio.getStreamMaxVolume(AudioManager.STREAM_MUSIC),
AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
希望对你有所帮助
假设您不想将所有流静音,因为您对播放自己的声音感兴趣,这可能是适合您的解决方案:使用 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 应用程序(播放哔声)是否符合此要求,但通常它应该可以工作,值得一试。
另一种选择是直接将来自 Google 应用程序的所有声音静音(包括 Google 语音识别提示音)。这种方法的优点是不会干扰任何其他流式音频。以下是 link 的进一步详细信息。但是请注意,这需要 root 访问权限:
https://android.stackexchange.com/questions/128588/how-do-i-disable-the-google-voice-typing-voice-search-ding-sound.
您可以使用音频管理器来控制声音
AudioManager audioManager=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
开始识别来电之前
audioManager.setStreamMute(AudioManager.STREAM_MUSIC, true);
识别完成后
打电话
audioManager.setStreamMute(AudioManager.STREAM_MUSIC, false);
我找到了另一个解决方案 对我来说效果很好。我将媒体播放器的音频流设置为另一个流,这样我就可以将音乐流静音。我希望这对其他人也有帮助。
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();
我有一个持续使用 Google 语音的测试应用程序,它会在每次调用 Google 识别服务时播放提示音。我正在尝试摆脱哔声。我已经阅读了有关将音乐流静音的帖子,但这对我不起作用。
我正在尝试找到哔声文件的位置,这样我就可以直接将其从系统中删除。我关注了 this 帖子,但是我在 5.0 系统文件中看不到该文件。
我找到的唯一使哔声识别静音的解决方案是:
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);
要return恢复音量等级,如蛔虫:
audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audio.setStreamVolume(AudioManager.STREAM_MUSIC, audio.getStreamMaxVolume(AudioManager.STREAM_MUSIC),
AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
希望对你有所帮助
假设您不想将所有流静音,因为您对播放自己的声音感兴趣,这可能是适合您的解决方案:使用 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 应用程序(播放哔声)是否符合此要求,但通常它应该可以工作,值得一试。
另一种选择是直接将来自 Google 应用程序的所有声音静音(包括 Google 语音识别提示音)。这种方法的优点是不会干扰任何其他流式音频。以下是 link 的进一步详细信息。但是请注意,这需要 root 访问权限: https://android.stackexchange.com/questions/128588/how-do-i-disable-the-google-voice-typing-voice-search-ding-sound.
您可以使用音频管理器来控制声音
AudioManager audioManager=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
开始识别来电之前
audioManager.setStreamMute(AudioManager.STREAM_MUSIC, true);
识别完成后 打电话
audioManager.setStreamMute(AudioManager.STREAM_MUSIC, false);
我找到了另一个解决方案 对我来说效果很好。我将媒体播放器的音频流设置为另一个流,这样我就可以将音乐流静音。我希望这对其他人也有帮助。
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();