Gapless Playback with android MediaPlayer
android, media-player
Solution
When a playback finishes, the player engine would check if all tracks are completed and once done, it will check for the `looping` flag. Based on the `looping` flag, a `seek` to `0` seconds. As part of the seek, the player engine will read the data from the specific position and start the playback.
The delay may be due to the `seek` implementation along with the delay introduced by the storage medium like `sdcard` apart from re-initializing all tracks and restarting them. Hence, there is definite delay by the time the player reverts back to the starting position.
The underlying looping implementation can be found in this function `AwesomePlayer::onStreamDone` as shown here: http://androidxref.com/4.2.2_r1/xref/frameworks/av/media/libstagefright/AwesomePlayer.cpp#834
EDIT 1:
To implement a true `gapless playback`, you could also consider the `setNextMediaPlayer()` feature.
Problem
I'm trying to repeatedly play a audio continuously, without any gap. I've tried, ``` mediaplayer.setLooping(true); ``` But it gives a gap between repeat time. And tried this, ``` mediaplayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { mediaplayer.start(); } }); ``` It gives a gap also. I've tried with different audio format. But neither way worked for me. Is there any other way in android?