Control de velocidad de MediaPlayer en Android

Estoy desarrollando una aplicación de reproductor y estoy usando MediaPlayer para eso.

Ahora, quiero cambiar la velocidad de la pista de reproducción.

He visto tantas aplicaciones con esta funcionalidad. ¿Cómo puedo hacer esto?

5 Solutions collect form web for “Control de velocidad de MediaPlayer en Android”

MediaPlayer no proporciona esta característica pero SoundPool tiene esta funcionalidad. La clase SoundPool tiene un método llamado setRate (int streamID, float rate) . Si está interesado en el API, eche un vistazo aquí .

Este Snippet funcionará.

  float playbackSpeed=1.5f; SoundPool soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 100); soundId = soundPool.load(Environment.getExternalStorageDirectory() + "/sample.3gp", 1); AudioManager mgr = (AudioManager) getSystemService(Context.AUDIO_SERVICE); final float volume = mgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC); soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() { @Override public void onLoadComplete(SoundPool arg0, int arg1, int arg2) { soundPool.play(soundId, volume, volume, 1, 0, playbackSpeed); } }); 

Soundpool sólo soporta archivos de efectos de sonido relativamente pequeños que pueden ser precargados. Obtendrá desbordamientos de montón con cualquier pista de música de longitud útil.

A partir de la API 23 , MediaPlayer puede establecer la velocidad de reproducción utilizando este método .

Clase MediaPlayer

public void setPlaybackParams (PlaybackParams params) Añadido en el nivel 23 del API

Establece la velocidad de reproducción usando PlaybackParams. Parámetros Parámetros PlaybackParams: Parámetros de reproducción. Muestra IllegalStateException si el motor del reproductor interno no se ha inicializado. IllegalArgumentException si params no es compatible.

Código de muestra:

 MediaPlayer mp = ...; //Whatever float speed = 0.75f; mp.setPlaybackParams(mp.getPlaybackParams().setSpeed(speed)); 

Para API <23 , refiérase a la respuesta de Vipul Shah arriba (o debajo).

La clase MediaPlayer no proporciona esta funcionalidad. En su lugar, utilice la clase SoundPool . Tiene un método llamado setRate (int streamID, float rate) . Lea esto para más información. Aquí hay un código de ejemplo para que usted pueda trabajar con él.

Ahora puedes usar

mediaPlayer.setPlaybackParams(mediaPlayer.getPlaybackParams().setSpeed(speed)

Para API 23 y más!

Aquí hay un post en mi blog con más detalles

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