4

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

1 回答 1

3

这可能是由于两个原因。

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

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

或尝试

添加 equalizer.setEnabled(false);

在创建另一个之前。

于 2015-03-04T11:36:41.483 回答