Equalizer.usePreset lanza Excepción de argumento no válido

Estoy creando mediaPlayer con ecualizador, cuando pongo las bandas de EQ funciona bien. Tengo el código que enumera todos los presets, en cambio quiero fijar el preset al EQ, pero estoy consiguiendo el bad parameter value .

Esto es lo que tengo en mi registro:

 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 () devuelve 12 y preset para establecer para este ejemplo es 2 (pero sucede para todos los valores 0-11)

Si utilizo setBandLevel() antes de usePreset() no está lanzando una excepción, pero no estoy seguro si esta es la manera correcta de hacerlo. Edit: setBandLevel no tiene nada que ver con la excepción. Simplemente aparece al azar, el 80% de los intentos.

Actualización: Me di cuenta de que esto está sucediendo en los dispositivos Samsung S3 (por ahora). Funciona bien en Asus TF101.

Cualquier ayuda es apreciada.

Aquí está el código:

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

Puede deberse a dos razones.

Es posible que su dispositivo no esté soportando el ecualizador. Pero como usted dijo usted consigue una lista de Preset. Significa que está apoyando.

Ahora el problema puede ser que tiene dos instancia de ecualizador. Debe liberar el ecualizador.

O intentar

Añadir equalizer.setEnabled(false);

Antes de crear otro.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.