【发布时间】:2017-07-08 11:13:42
【问题描述】:
我在这行代码的均衡器上收到 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);
}
这里是例外
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)
如何解决此问题,以使应用程序不会崩溃。我的意思是如何检查设备是否支持此操作,如果不支持,我将跳过此行。谢谢。
【问题讨论】:
-
@Henry 捕捉异常始终是您是否可以使用控制条件解决问题的最后一件事
-
@Heinrich an
UnsupportedOperationException如果决定不实现某个操作,通常由接口或抽象类的具体实现抛出。客户端在调用它之前不知道具体实现是否支持该操作。否则,它必须了解所有现有(和未来)的具体实现。 -
@Henry Android 的
AudioEffect类的问题是,有时它们工作得很好,有时却不能,甚至在同一设备上也抛出异常。 -
我也遇到了同样的异常,但是在禁用默认均衡器(在我的情况下是 lineage os 上的 audiofx )之后,它工作得很好。所以我认为错误是由于已经安装了 equalizer 。是的,在我的情况下,
bassBoost.setEnabled(bassBoostPos > 0 ? true : false);在启用另一个系统均衡器时返回 -5 else 0 。 Equalizer set enabled() 相同。如果系统有均衡器,则临时解决方案,然后调用它,否则使用你的。 -
@MeenaPintu 你是如何禁用默认均衡器的?
标签: java android android-fragments equalizer audioeffect