Equalizer.usePreset抛出无效的参数异常

时间:2013-09-29 12:37:58

标签: android equalizer

我正在使用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);

1 个答案:

答案 0 :(得分:3)

可能是由于两个原因。

您的设备可能不支持均衡器。但正如你所说,你得到了预设列表。这意味着它正在支持。

现在问题可能是您有两个均衡器实例。你必须释放均衡器。

或尝试

添加 equalizer.setEnabled(false);

在创建另一个之前。