java - UnsupportedOperationException 音频效果 : invalid parameter operation

标签 java android android-fragments equalizer audioeffect

我在这行代码的均衡器上遇到了 UnsupportedOperationException 错误。 bassBoost.setStrength((短) 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); 
}

异常(exception)情况

java.lang.UnsupportedOperationException: AudioEffect: invalid parameter    
operation
at android.media.audiofx.AudioEffect.checkStatus(AudioEffect.java:1271)
at android.media.audiofx.BassBoost.setStrength(BassBoost.java:127)

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

最佳答案

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

  1. AudioEffect.ERROR_BAD_VALUE
  2. AudioEffect.ERROR_INVALID_OPERATION --> 您的情况会出现这种情况
  3. 运行时异常

为什么会出现 AudioEffect.ERROR_BAD_VALUE?

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

为什么会出现 AudioEffect.ERROR_INVALID_OPERATION?

操作失败,因为它是在错误的状态下请求的。它会导致 UnsupportedOperationException 并给出错误 "AudioEffect: invalid parameter operation"

运行时异常

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

错误状态主要发生在什么时候?如何解决?

Ans:均衡器处理完成后,如果不调用release()方法,会出现错误状态。所以释放后使均衡器对象等于null。

如果您使用 api 级别 25,则更改它。这个错误大多发生在这个级别。所以,如果可能的话,改变它。

有时 native 库不允许实例化新的 AudioEffect。因为那里已经存在太多对象。它还会导致错误的状态。

资源链接:

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

关于java - UnsupportedOperationException 音频效果 : invalid parameter operation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42323140/

相关文章:

Android Facebook SDK - Null GraphUser

java - 在 fragment Activity 中使用列表适配器

c# - 将数据从 fragment 发送到 Activity android C#

java - 使用加载时编织时未编织父类(super class)中的@Transactional

java - 数组是Java中的对象吗?

java - Maven 程序集插件 : add a file into a dependency jar

android - 无法将文件附加到 ACTION_SEND Intent

java - 如何确保第三方API正常工作

android - 固定纵横比 View

java - 当只有一个 fragment 可见时, fragment 之间进行通信