2

我正在尝试通过在输出混音(音频会话“0”)上创建混响来将混响效果应用于媒体播放器,我使用此代码

    public void reverb1(View v){
    PresetReverb mReverb = new PresetReverb(0,0);//<<<<<<<<<<<<<
    mReverb.setPreset(PresetReverb.PRESET_LARGEROOM);
    mReverb.setEnabled(true);
    mp1.attachAuxEffect(mReverb.getId());
    mp1.setAuxEffectSendLevel(1.0f);

}

但是,当我开始播放歌曲并应用效果时,没有任何反应,歌曲继续播放并且不应用混响效果。我还在清单中添加了这个前提<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/> 仍然相同的结果,我做错了什么吗?我也试过PresetReverb mReverb = new PresetReverb(0, mp1.getAudioSessionId());但结果还是一样。

任何帮助将不胜感激

4

1 回答 1

1
PresetReverb mReverb = new PresetReverb(0, mp1.getAudioSessionId());

这个构造函数有两个参数,第一个是优先级,另一个是音频会话 ID。如果你想混响而不是保持你的优先级 1 并使用全局 audiosessionId。

PresetReverb mReverb = new PresetReverb(1, 0);
mReverb.setPreset(PresetReverb.PRESET_LARGEROOM);
mReverb.setEnabled(true);
mp1.attachAuxEffect(mReverb.getId());
mp1.setAuxEffectSendLevel(1.0f);

还有一点需要注意的是,某些设备不支持这种混响效果……因为它们的均衡器频段有限。我没有完美的资源来确认我对某些设备的状态,但是我在某些设备上进行了相同的测试,它对某些设备运行良好,对某些设备运行不正常

于 2013-04-24T11:00:20.050 回答