2013-09-29 63 views
4

我用EQ創建mediaPlayer,當我設置EQ樂隊時它工作正常。我有代碼列出所有預設,更改我想設置預設爲EQ,但我得到bad parameter valueEqualizer.usePreset引發無效參數異常

這是我在我的日誌:

09-29 14:29:24.810: W/System.err(27829): java.lang.IllegalArgumentException: AudioEffect: bad parameter value 
09-29 14:29:24.835: W/System.err(27829): at android.media.audiofx.AudioEffect.checkStatus(AudioEffect.java:1259)  
09-29 14:29:24.835: W/System.err(27829): at android.media.audiofx.Equalizer.usePreset(Equalizer.java:342) 

getNumberOfPresets()返回12 並預置在這個例子中設置爲2(但它發生的所有值0-11)

如果我在usePreset()之前使用setBandLevel()它不會引發異常,但我不確定這是否是正確的方式。 編輯:setBandLevel與異常無關。它只是隨機彈出,80%的嘗試。

更新:我注意到,這隻發生在三星S3設備(現在)上。在Asus TF101上運行良好。

任何幫助表示讚賞。

下面是代碼:

mEqualizer = new Equalizer(0, mMediaPlayer.getAudioSessionId()); 
mEqualizer.setEnabled(true); 
mEqualizer.usePreset((short)mEQPresetPos); 
+0

向我們展示您如何調用均衡器的代碼。 – RvdK

+0

我用代碼更新了問題。 – cucko

+0

我不明白這個代碼有時會如何工作,有時會拋出異常,對於相同的mEQPresetPos值。 – cucko

回答

3

這可能是由於兩方面的原因。

您的設備可能不支持均衡器。但正如你所說,你會得到一個預設列表。這意味着它是支持。

現在問題可能是你有兩個均衡器的實例。你必須釋放均衡器。

,或者嘗試

創造一個又一個前加 equalizer.setEnabled(false);

+0

也檢查http://stackoverflow.com/ a/10885407/1925394 – shehzy

+0

does any1得到了解決方案嗎? – AkhilGite

+0

他是對的均衡器的兩個instace問題 –