2013-09-29 5 views
4

EQ가있는 mediaPlayer를 만들고 있는데, 잘 작동하는 EQ 밴드를 설정할 때. 나는 모든 프리셋을 나열하는 코드를 가지고 있으며, 프리셋을 EQ로 설정하려고 할 때, 나는 bad parameter value을 얻고있다. Equalizer.usePreset throws 유효하지 않은 인수 예외

내가 내 로그에있는 것입니다 :

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 값에 대해 예외가 throw되는 것을 이해하지 못합니다. – cucko

답변

3

그것은 인해 두 가지 이유가있을 수 있습니다 : 여기

는 코드입니다.

기기가 이퀄라이저를 지원하지 않을 수 있습니다. 하지만 당신이 말했듯이 프리셋 목록을 얻습니다. 그것은 그것이 지원된다는 의미입니다.

이제 이퀄라이저 인스턴스가 두 개인 경우가 있습니다. 이퀄라이저를 해제해야합니다.

또는

다른 하나를 만들기 전에 equalizer.setEnabled(false);

를 추가하려고합니다.

+0

also check http://stackoverflow.com/ a/10885407/1925394 – shehzy

+0

any1 님이 해결책을 얻었습니까? – AkhilGite

+0

그는 이퀄라이저 –