@Override
public void onClick(View v) {
int pos;
+ boolean playing = mPlayer.isPlaying();
switch (v.getId()) {
case R.id.playBtn:
pos = mPlayer.getCurrentPosition();
pos -= 5000;
mPlayer.seekTo(pos);
+ if (!playing) mPlayer.pause(); // necessary in some 2.3.x devices
setProgress();
break;
pos = mPlayer.getCurrentPosition();
pos += 15000;
mPlayer.seekTo(pos);
+ if (!playing) mPlayer.pause(); // necessary in some 2.3.x devices
setProgress();
break;
import android.media.MediaPlayer.OnErrorListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.net.Uri;
+import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
*/
@Override
public void onPrepared(MediaPlayer vp) {
+ Log.e(TAG, "onPrepared");
mVideoPreview.seekTo(mSavedPlaybackPosition);
if (mAutoplay) {
mVideoPreview.start();
*/
@Override
public void onCompletion(MediaPlayer mp) {
- mVideoPreview.seekTo(0);
+ Log.e(TAG, "completed");
+ if (mp != null) {
+ mVideoPreview.seekTo(0);
+ // next lines are necessary to work around undesired video loops
+ if (Build.VERSION.SDK_INT == Build.VERSION_CODES.GINGERBREAD) {
+ mVideoPreview.pause();
+
+ } else if (Build.VERSION.SDK_INT == Build.VERSION_CODES.GINGERBREAD_MR1) {
+ // mVideePreview.pause() is not enough
+
+ mMediaController.setEnabled(false);
+ mVideoPreview.stopPlayback();
+ mAutoplay = false;
+ mSavedPlaybackPosition = 0;
+ mVideoPreview.setVideoPath(mFile.getStoragePath());
+ }
+ } // else : called from onError()
mMediaController.updatePausePlay();
}