首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UnsupportedOperationException AudioEffect:无效的参数操作

UnsupportedOperationException AudioEffect:无效的参数操作
EN

Stack Overflow用户
提问于 2017-02-19 02:56:34
回答 2查看 2.1K关注 0票数 7

我在这行代码的均衡器上得到一个UnsupportedOperationException错误。bassBoost.setStrength((short) bassBoostPos);

这是密码

代码语言:javascript
复制
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); 
}

这是个例外

代码语言:javascript
复制
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)

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

EN

回答 2

Stack Overflow用户

发布于 2017-04-29 17:45:25

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

  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"

为什么会发生AudioEffect.ERROR_INVALID_OPERATION?

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

RuntimeException

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

当错误的状态主要发生的时候?如何解决问题?

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

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

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

资源链接:

  1. https://stackoverflow.com/a/10885407/2293534
  2. https://stackoverflow.com/a/40968149/2293534
  3. BassBoost.java类分析
票数 4
EN

Stack Overflow用户

发布于 2017-05-06 04:47:35

  1. 在设置强度之前,需要检查它是否支持。为此,需要添加以下条件。 if(bassBoost.getStrengthSupported()) { bassBoost.setStrength((short) bassBoostPos);}
  2. 另外要注意的是,BassBoost强度的值应该在0到1000的范围内,这意味着对最强效应的影响是最小的。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42323140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档