I want to play mp3 from url with MediaPlayer, but the network is disconnected when buffering a part of stream, how can I going on buffering the remaining stream when the network connects again.
mp = MediaPlayer.create(this, Uri.parse("http://media.cmechina.net/mobile/201500011693/02/flv/5.mp3"));
mp.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() {
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
Log.d("TAG", "percent: " + percent);
}
});
mp.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
Log.d("TAG", "onError === what: " + what + " extra: " + extra);
return false;
}
});
mp.setOnInfoListener(new MediaPlayer.OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
Log.d("TAG", "onInfo what: " + what + " extra: " + extra);
return false;
}
});
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
Log.d("TAG", "onCompletion is called!");
}
});
when internet goes down, you should know from onError method, when that happens, you can save the position where the player stopped and try to stream again.
Personally i prefer creating instance from MediaPlayer
then i use
player.setOnPreparedListener(this);
androidPlayer.setDataSource(URL);
androidPlayer.prepareAsync();
once the player is ready and triggers onPrepared(MediaPlayer player)
, check if there is saved position then call player.seekTo(timeMilisecond)
remember to set listener for onPrepared
and on onSeekComplete