2012-11-07 19 views
10

我有幾乎相同的問題,如描述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) 

的錯誤,我不知道如何解決這個問題,有什麼建議?

回答

0

這取決於在設備上加載的Android版本。

此日誌表示沒有庫來實現AudioEffect功能。

我恐怕沒有這個無解,而不是導入到你的項目的一些第三方音效庫

3

請確保您重新啓動設備,並與釋放再次測試()使用均衡器後,它在尋找線索2天后爲我工作。

0

從文檔中,您必須在Equalizer,MediaPlayer,Visualizer等上調用release()才能正常退出,否則在重新啓動應用程序時會看到此錯誤。唯一的補救措施就是重新啓動,正如前面提到的那樣。

這就是Android應用程序生命週期,使事情有點困難,因爲應用程序決不應該退出(只是暫停和恢復),除非OS絕對需要記憶的原因,或重新啓動時。在這兩種情況下都會調用您的app onDestroy()方法。

您可以將release()放在onDestroy()中,這樣可以滿足已部署應用程序的Android生命週期。你的用戶不會看到這個錯誤。

在開發過程中存在一個問題:像Eclipse這樣的IDE(它實際上是一個構建IDE的框架,並不意味着它是一個IDE本身......)會終止應用程序進程而不是發送一個銷燬消息。這違反了生命週期,release()不會被調用。

這也是你不應該調用System.exit()的原因。它違背了生命週期,冒着不正常退出的風險。

所以你的過程是不正常地退出。只發生在開發中,而不是部署。一種補救措施是不要在eclipse中使用設備窗口來停止進程。這不是一個停止,而是一個殺手。

Eclipse還殺死(生命週期違例)的非正常過程,當你運行一個應用程序的項目,同時已經有運行的實例。

正如醫生說,如果它傷害,不這樣做:改爲使用它發送的實際生命週期的信息到應用程序的調試器。