我正在使用EQ创建mediaPlayer,当我设置EQ频段时,它工作正常。我有代码列出所有预设,在更改时我想将预设设置为EQ,但我得到bad parameter value
。
这就是我在日志中的内容:
09-29 14:29:24.810: W/System.err(27829): java.lang.IllegalArgumentException: AudioEffect: bad parameter value
09-29 14:29:24.835: W/System.err(27829): at android.media.audiofx.AudioEffect.checkStatus(AudioEffect.java:1259)
09-29 14:29:24.835: W/System.err(27829): at android.media.audiofx.Equalizer.usePreset(Equalizer.java:342)
getNumberOfPresets()返回12 并且预设为此示例设置为2(但它适用于所有值0-11)
如果我在setBandLevel()
之前使用usePreset()
,它不会抛出异常,但我不确定这是否是正确的方法。
编辑:setBandLevel与异常无关。它只是随机弹出,80%的尝试。
更新:我注意到这只发生在三星S3设备上(目前)。适用于华硕TF101。
感谢任何帮助。
以下是代码:
mEqualizer = new Equalizer(0, mMediaPlayer.getAudioSessionId());
mEqualizer.setEnabled(true);
mEqualizer.usePreset((short)mEQPresetPos);
答案 0 :(得分:3)
可能是由于两个原因。
您的设备可能不支持均衡器。但正如你所说,你得到了预设列表。这意味着它正在支持。
现在问题可能是您有两个均衡器实例。你必须释放均衡器。
或尝试
添加
equalizer.setEnabled(false);
在创建另一个之前。