是否有使用PresetReverb类的音频混响的示例代码 2.3在Android中?
MediaPlayer mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(this, Uri.parse("/sdcard/music/sample.mp3"));
PresetReverb mReverb = new PresetReverb(0,
mMediaPlayer.getAudioSessionId());
mReverb.setPreset(PresetReverb.PRESET_LARGEROOM);
mReverb.setEnabled(true);
mMediaPlayer.attachAuxEffect(mReverb.getId());
mMediaPlayer.setAuxEffectSendLevel(1.0f);
mMediaPlayer.prepare();
mMediaPlayermp.start();
我执行了上面的来源,但没有听到声音。
当我在源之后添加这句话时,我能听到声音。
Thread.sleep(10000);
mp.stop();
然而声音是正常的,没有受到反响。
此外,此权限在Manifest.xml上设置。
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
除了那些之外,还有什么我必须写的吗?
答案 0 :(得分:3)
PresetReverb mReverb = new PresetReverb(0,mMediaPlayer.getAudioSessionId());//<<<<<<<<<<<<<
mReverb.setPreset(PresetReverb.PRESET_SMALLROOM);
mReverb.setEnabled(true);
mMediaPlayer.setAuxEffectSendLevel(1.0f);
不要将它附加到媒体播放器。如果你使用getAudioSessionId(),它已被附加。 (在&gt; v4上测试)
要禁用,请使用 effect.setEnabled(假);
答案 1 :(得分:1)
实例化PresetReverb
。您需要附加PresetReverb
的音频会话ID。然后只需设置要使用的混响的预设值。
PresetReverb reverb = new PresetReverb(0, mediaPlayer.getAudioSessionId());
reverb.setPreset( PresetReverb.PRESET_LARGEHALL);
reverb.setPreset(PresetReverb.PRESET_LARGEROOM);
此外,如果您需要参数侦听器,那么让您的类实现PresetReverb.OnParameterChangeListener
然后覆盖未实现的方法
@Override
public void onParameterChange(PresetReverb effect, int status, int param,
short value) {
// TODO Auto-generated method stub
}
在您需要应用混响的位置,只需使用:
reverb.setEnabled(true);
答案 2 :(得分:1)
使用混响,在输出混音上创建一个混响(音频会话“0”) (参考文献http://developer.android.com/reference/android/media/audiofx/PresetReverb.html)
原因
'音频框架'有两个connectMode :( EFFECT_INSERT,EFFECT_AUXILIARY), 必须在会话0(全局输出混合)上创建“辅助效果”。 (参考文献http://developer.android.com/reference/android/media/audiofx/AudioEffect.html#EFFECT_AUXILIARY)
想象一下真正的混音控制台。
示例
PresetReverb mReverb = new PresetReverb(0,0);//<<<<<<<<<<<<<
mReverb.setPreset(PresetReverb.PRESET_LARGEROOM);
mReverb.setEnabled(true);
mMediaPlayer.attachAuxEffect(mReverb.getId());
mMediaPlayer.setAuxEffectSendLevel(1.0f);
答案 3 :(得分:0)
这里有一分钱,
只有在输出混音(音频会话0)上创建混响时才需要权限MODIFY_AUDIO_SETTINGS