I'm trying to listen to OnInfoListener of a mediaplayer I've created to get when buffering starts and ends.
For some reason the event never fires.
This is my initializing code
private void initPlayer(Surface s){
mPlayer = new MediaPlayer();
mPlayer.setSurface(s);
mPlayer.setOnCompletionListener(this);
mPlayer.setOnErrorListener(this);
mPlayer.setOnInfoListener(this);
mPlayer.setOnPreparedListener(this);
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mPlayer.setDataSource(file_url);
mPlayer.prepare();
} catch (IllegalArgumentException e) {
OnError(PLAYER_ERRORS.player_not_loaded, e.getMessage() + "");
} catch (SecurityException e) {
OnError(PLAYER_ERRORS.player_not_loaded, e.getMessage() + "");
} catch (IllegalStateException e) {
OnError(PLAYER_ERRORS.player_not_loaded, e.getMessage() + "");
} catch (IOException e) {
OnError(PLAYER_ERRORS.no_connection, e.getMessage() + "");
}
}
And this is my listener
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
if(what == MediaPlayer.MEDIA_INFO_BUFFERING_START)
{
OnEvent(PLAYER_EVENT.buffering_start);
}
else if(what == MediaPlayer.MEDIA_INFO_BUFFERING_END)
{
OnEvent(PLAYER_EVENT.buffering_end);
OnGotDuration(getDuration());
}
return what == MediaPlayer.MEDIA_INFO_BUFFERING_START || what == MediaPlayer.MEDIA_INFO_BUFFERING_END;
}
Can someone please help me understand why is this happening? Thanks