2012-02-22 12 views
11

En la API de Android, AudioEffect, todos los efectos incorporadas tales como ecualizador vienen con una advertencia¿Forma preferida de conectar AudioEffect a la mezcla global?

"NOTA: conectar un ecualizador a la mezcla global de salida de audio mediante el uso de la sesión 0 es obsoleto"

Si esto está en desuso, entonces ¿cuál es la API de reemplazo? Mi objetivo es para agregar un efecto a la mezcla de salida global ...

Respuesta

4

Sí, está en desuso, debido a side-effects isues.

El sitio web de desarrolladores de Android afirma que el segundo parámetro de la clase ecualizador debe ser:

Un sistema identificador único en todo sesión de audio. El ecualizador será conectado al MediaPlayer o AudioTrack en la misma sesión de audio.

usted debe utilizar en su lugar:

MediaPlayer mediaPlayer = new MediaPlayer(); 
mediaPlayer.setDataSource(_your_data_source_); 
Equalizer equalizer = new Equalizer(0, mediaPlayer.getAudioSessionId()); 
equalizer.setEnabled(true); 
/* Do your stuff ... */ 
mediaPlayer.start(); 
+0

Como se mencionó en uno de los comentarios sobre su enlace, esto no es una solución alternativa, en el caso en el que desea aplicar ecualizador u otro efecto a una corriente existente, o todas las secuencias. – yano

+0

Por ahora, todavía puede utilizar la sesión de audio global con el 'Ecualizador'. No hay reemplazo, la depreciación no siempre viene con el reemplazo. Simplemente pensaron que esto no parecía funcionar bien y decidieron mantener el soporte hasta más lanzamientos de Android. La solución en su caso es adjuntar un ecualizador a cada instancia de MediaPlayer en sus aplicaciones. De lo contrario, corres el riesgo de mantener un 'Ecualizador' conectado a la sesión de audio global sabiendo que no se ejecutará en futuras versiones. –

+0

Hola Halim, ¿Cómo adjuntar eqaulizer a cada instancia de MediaPlayer? Por favor comparte más información sobre eso. Además, ¿qué alternativa hay para unir efecto globalmente en ICS? – JRC

Cuestiones relacionadas