UnsupportedOperationException AudioEffect:无效的参数操作 [英] UnsupportedOperationException AudioEffect: invalid parameter operation

查看:630
本文介绍了UnsupportedOperationException AudioEffect:无效的参数操作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

此行代码的均衡器上出现 UnsupportedOperationException 错误. bassBoost.setStrength((short) bassBoostPos);

I'm getting an UnsupportedOperationException error on an equalizer on this line of code. 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); 
}

这是个例外

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)

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

How do I fix this so that the application doesn't crash. I mean how can I check to see if the device support this operation, if it doesn't support, I would just skip this line. Thanks.

推荐答案

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

In AudioEffect, there are 3 types of error occurs.

  1. AudioEffect.ERROR_BAD_VALUE
  2. AudioEffect.ERROR_INVALID_OPERATION -> this occurs for your case.
  3. RuntimeException
  1. AudioEffect.ERROR_BAD_VALUE
  2. AudioEffect.ERROR_INVALID_OPERATION --> this occurs for your case.
  3. RuntimeException

为什么会发生AudioEffect.ERROR_BAD_VALUE?

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

操作失败,因为它以错误状态被请求.它导致 UnsupportedOperationException 并给出错误"AudioEffect: invalid parameter operation"

Operation failed because it was requested in wrong state. It causes UnsupportedOperationException and gives the error "AudioEffect: invalid parameter operation"

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

It occurs in runtime. It gives the error "AudioEffect: set/get parameter error"

答案:在均衡器的处理完成后,如果未调用release()方法,则会发生错误的状态.因此,释放均衡器对象后使其等于null.

Ans: After finishing process of an equalizer, if it doesn't called the release() method, the wrong state happens. So make the equalizer object equal to null after releasing it.

如果您使用的是api级别25,请进行更改.此错误主要发生在此级别.因此,如有可能,请进行更改.

If you use api level 25, then change it. This error occurs in this level mostly. So, if possible, change it.

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

Sometimes instantiation of a new AudioEffect is not allowed by native libraries. because too many objects are already exists there. It also causes wrong state.

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

这篇关于UnsupportedOperationException AudioEffect:无效的参数操作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆