En este caso el error es un IllegalStateException
al tratar de usar el método .prepare()
:
FATAL EXCEPTION: main Process: com.david.animefm2, PID: 20358 java.lang.IllegalStateException at android.media.MediaPlayer._prepare(Native Method) at android.media.MediaPlayer.prepare(MediaPlayer.java:1408) at com.david.animefm2.MainActivity$1.onClick(MainActivity.java:72)
En este caso, no debes usar prepare()
y posteriormente start()
o viceversa:
mediaPlayer.prepare(); mediaPlayer.start();
Debes usar el listener OnPreparedListener() para determinar cuando el MediaPlayer
esta listo para reproducción y de esta forma llamar el método start()
para iniciar la reproducción:
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer arg0) { //Inicia reproducción. mediaPlayer.start(); }});
En cuanto a lo que realizas:
si pulso 3 veces el botón, esta se detiene.
debes validar si el MediaPlayer esta reproduciendo si es así debes detener la reproducción, cargar el nuevo url y realizar el procedimiento anterior, preparar y reproducir:
if(mediaPlayer!=null && mediaPlayer.isPlaying()){ mediaPlayer.stop(); mediaPlayer.reset(); }
Si necesitas implementar buffering revisa las opciones que sugiere @WebServeis: