UnsupportedOperationException AudioEffect:参数操作无效

Jul*_*lia 7 java android equalizer android-fragments audioeffect

我在这行代码上的均衡器上遇到UnsupportedOperationException错误.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); 
}
Run Code Online (Sandbox Code Playgroud)

这是例外

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)
Run Code Online (Sandbox Code Playgroud)

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

Sky*_*ker 4

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

  1. AudioEffect.ERROR_BAD_VALUE
  2. AudioEffect.ERROR_INVALID_OPERATION --> this occurs for your case
  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,则更改它。这个错误大多发生在这个级别。所以,如果可能的话,改变它。

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

资源链接:

  1. /sf/answers/761978521/
  2. /sf/answers/2867770461/
  3. BassBoost.java类分析