【问题标题】:Equalizer.usePreset throws Invalid argument exceptionEqualizer.usePreset 抛出无效参数异常
【发布时间】:2015-03-04 19:36:41
【问题描述】:

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

如果我在usePreset() 之前使用setBandLevel(),它不会引发异常,但我不确定这是否是正确的方法。 编辑: setBandLevel 与异常无关。它只是随机弹出,80% 的尝试次数。

更新:我注意到这仅在三星 S3 设备上发生(目前)。在华硕 TF101 上运行良好。

感谢任何帮助。

代码如下:

mEqualizer = new Equalizer(0, mMediaPlayer.getAudioSessionId());
mEqualizer.setEnabled(true);
mEqualizer.usePreset((short)mEQPresetPos);

【问题讨论】:

  • 向我们展示您如何调用均衡器的代码。
  • 我用代码更新了问题。
  • 对于相同的 mEQPresetPos 值,我不明白这段代码有时如何工作,有时会引发异常。
  • mEQPresetPos 的值是多少?
  • 您是否尝试过最后一次调用 setEnabled?首先设置均衡器然后激活它似乎更合乎逻辑。

标签: android equalizer


【解决方案1】:

可能有两个原因。

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

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

或者试试

添加 equalizer.setEnabled(false);

在创建另一个之前。

【讨论】:

  • 有没有解决方案?
  • 他对均衡器的两个instace问题是正确的
  • 没有尝试使用 api 25,但可以使用我的 5.1.1 设备
  • 我在 6.0 上测试了均衡器,它工作正常,但在 7.0 上崩溃了
猜你喜欢
  • 2013-11-29
  • 1970-01-01
  • 2014-01-25
  • 2021-04-15
  • 2014-02-23
  • 2016-11-07
  • 2019-11-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多