UnsupportedOperationException AudioEffect:参数操作无效

时间:2017-02-19 02:56:34

标签: java android android-fragments equalizer audioeffect

我在这行代码上的均衡器上遇到 UnsupportedOperationException 错误。 cors

这是代码

bassBoost.setStrength((short) bassBoostPos);

这是例外

equalizer = new Equalizer(0, 0);
if (equalizer != null) {
equalizer.setEnabled (isEqualizer);
numBands = equalizer.getNumberOfBands();
short r[] = equalizer.getBandLevelRange();
minLevel = r[0];
maxLevel = r[1];
bassBoost = new BassBoost (0, 0);

if(bassBoost != null) {
    bassBoost.setEnabled(bassBoostPos > 0 ? true : false);
    bassBoost.setStrength((short) bassBoostPos); 
}

如何解决此问题,以便应用程序不会崩溃。我的意思是我如何检查设备是否支持此操作,如果它不支持,我会跳过这一行。感谢。

1 个答案:

答案 0 :(得分:3)

在AudioEffect中,有3种类型的错误发生。

  1. AudioEffect.ERROR_BAD_VALUE
  2. AudioEffect.ERROR_INVALID_OPERATION - > this occurs for your case
  3. 的RuntimeException
  4. 为什么会发生AudioEffect.ERROR_BAD_VALUE?

    由于参数值错误导致操作失败。它会导致 IllegalArgumentException 并提供错误"AudioEffect: bad parameter value"

    为什么会发生AudioEffect.ERROR_INVALID_OPERATION?

    操作失败,因为请求处于错误状态。它会导致 UnsupportedOperationException 并出现错误"AudioEffect: invalid parameter operation"

    的RuntimeException

    它发生在运行时。它给出了错误"AudioEffect: set/get parameter error"

    主要发生错误状态的时候?如何制定解决方案?

    Ans:完成均衡器的处理后,如果它没有调用release()方法,则会发生错误的状态。所以在释放后使均衡器对象等于null。

    如果使用api level 25,则更改它。此错误主要发生在此级别。所以,如果可能的话,改变它。

    有时本机库不允许实例化新的AudioEffect。因为那里已经存在太多的物体了。它也会导致错误的状态。

    资源链接:

    1. https://stackoverflow.com/a/10885407/2293534
    2. https://stackoverflow.com/a/40968149/2293534
    3. Analysis of BassBoost.java class