均衡器并非始终受支持,即使API >= 9?

13

在启用均衡器功能之前,我会检查API级别以确保它等于或大于9。 根据用户反馈的报告,似乎仍然会抛出一些异常:

代码 eq = new Equalizer(0, mp.getAudioSessionId()) 可能会引发异常:

Caused by: java.lang.UnsupportedOperationException: Effect library not loaded
at android.media.audiofx.AudioEffect.<init>(AudioEffect.java:355)
at android.media.audiofx.Equalizer.<init>(Equalizer.java:149)

而代码eq.getBandLevelRange()可能会引发以下问题:

Caused by: java.lang.UnsupportedOperationException: AudioEffect: invalid parameter operation
at android.media.audiofx.AudioEffect.checkStatus(AudioEffect.java:1182)
at android.media.audiofx.Equalizer.getBandLevelRange(Equalizer.java:206)

我不知道是否有解决方案,如果没有,我可以捕捉这些异常并禁用均衡器,但我需要知道到底是什么原因导致了这个问题,这样我才能告知我的用户而不会让他们感到沮丧。

谢谢任何帮助。


在 API 级别 25 上遇到了相同的错误,你找到了解决方案吗? - AkhilGite
1个回答

8

我曾经遇到过同样的问题,原因是我在使用完相应的均衡器后没有调用release()方法。显然,如果已经存在太多的音频效果实例,那么本地库就不允许实例化新的AudioEffect。


我在初始化均衡器的同一类中添加了发布,我的应用程序在除API级别25之外的所有设备上都可以正常工作。它会崩溃并显示异常java.lang.UnsupportedOperationException:AudioEffect:invalid parameter operation。因此,我在下面的链接上提出了一个问题: http://stackoverflow.com/questions/40967977/java-lang-unsupportedoperationexception-audioeffect-invalid-parameter-operatio/40968149?noredirect=1#comment69152090_40968149 - AkhilGite

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接