我有一个测试应用程序,连续使用Google语音,并且每次调用Google识别服务时都会播放嘟嘟声。我想要摆脱这个嘟嘟声。我已经阅读了静音音乐流的线程,但对我没有用。
我正在尝试找到嘟嘟声文件的位置,以便可以直接从系统中删除它。我按照此线程操作,但在5.0系统文件中找不到该文件。
我有一个测试应用程序,连续使用Google语音,并且每次调用Google识别服务时都会播放嘟嘟声。我想要摆脱这个嘟嘟声。我已经阅读了静音音乐流的线程,但对我没有用。
我正在尝试找到嘟嘟声文件的位置,以便可以直接从系统中删除它。我按照此线程操作,但在5.0系统文件中找不到该文件。
因此,您可以像这样:
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);
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);
如需返回恢复音量级别,可执行以下操作:
audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audio.setStreamVolume(AudioManager.STREAM_MUSIC, audio.getStreamMaxVolume(AudioManager.STREAM_MUSIC),
AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
AudioManager audioManager=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
在开始识别呼叫之前
audioManager.setStreamMute(AudioManager.STREAM_MUSIC, true);
识别完成后,调用
audioManager.setStreamMute(AudioManager.STREAM_MUSIC, false);
.setStreamMute
已经被弃用,有什么替代选项吗? - Hasan A Yousef我找到了另一种适合我的解决方案。我将媒体播放器的音频流设置为另一个流,这样我就可以静音音乐流。希望这也能帮助其他人。
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();