均衡器 - 未加载效果库

时间:2012-11-07 18:48:20

标签: android media-player equalizer

我和here描述的问题几乎相同,本文中的回答对我没有帮助,我在设置了乐队等级后立即释放了均衡器。它在我的4.0.4设备上工作得很好,它在朋友的2.3.5设备上运行良好,它在一小部分设备上崩溃,并且在这些设备上运行哪个版本的android并不重要。

所以

上有错误

Equalizer mEqualizer = new Equalizer(0, mediaPlayer.getAudioSessionId());

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)

我不知道如何解决这个问题,有什么建议吗?

3 个答案:

答案 0 :(得分:4)

确保在使用均衡器后重新启动设备并使用release()再次测试它,在搜索线索2天后它对我有效。

答案 1 :(得分:1)

从文档中,您必须在Equalizer,MediaPlayer,Visualizer等上调用release()才能正常退出,否则在重新启动应用程序时会看到此错误。唯一的补救办法就是重新启动,如前面提到的那样。

这是Android应用程序生命周期使事情变得有点困难的地方,因为应用程序永远不应该退出(只是暂停和恢复),除非操作系统出于内存原因的绝对需要,或者发生重新启动。在这两种情况下都会调用你的app onDestroy()方法。

您可以将release()放在onDestroy()中,这将满足已部署应用的Android生命周期。您的用户不会看到此错误。

在开发过程中存在一个问题:像Eclipse这样的IDE(实际上是构建IDE的框架,而不是IDE本身......)会杀死应用程序进程而不是发送破坏消息。这违反了生命周期,并且未调用release()。

这也是你永远不应该调用System.exit()的原因。它违反了生命周期,冒着不合适的退出风险。

所以你的过程不合时宜地退出。只发生在开发中,而不是部署中。一种补救措施是不在eclipse中使用设备窗口来停止进程。它不是停止,而是杀戮。

当你运行一个实例时运行一个app项目时,Eclipse也会不正当地杀死(生命周期违规)这个过程。

正如医生所说,如果疼,不要这样做:而是使用调试器将实际的生命周期信息发送给应用程序。

答案 2 :(得分:0)

这取决于设备上加载的Android版本。

此日志表示没有库来实现AudioEffect功能。

我担心没有解决方案,而是将一些第三方音频效果库导入您的项目