From: David A. Velasco Date: Wed, 10 Apr 2013 11:07:10 +0000 (+0200) Subject: Fixed undesired video loop after completion, caused by bugs in GINGERBREAD X-Git-Tag: oc-android-1.4.3~39^2~1 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/a11e7fd9004d8672077d6e3db7d69b74ea46e163?ds=inline Fixed undesired video loop after completion, caused by bugs in GINGERBREAD --- diff --git a/src/com/owncloud/android/media/MediaControlView.java b/src/com/owncloud/android/media/MediaControlView.java index 9db76df5..9f481230 100644 --- a/src/com/owncloud/android/media/MediaControlView.java +++ b/src/com/owncloud/android/media/MediaControlView.java @@ -391,6 +391,7 @@ public class MediaControlView extends FrameLayout /* implements OnLayoutChangeLi @Override public void onClick(View v) { int pos; + boolean playing = mPlayer.isPlaying(); switch (v.getId()) { case R.id.playBtn: @@ -401,6 +402,7 @@ public class MediaControlView extends FrameLayout /* implements OnLayoutChangeLi pos = mPlayer.getCurrentPosition(); pos -= 5000; mPlayer.seekTo(pos); + if (!playing) mPlayer.pause(); // necessary in some 2.3.x devices setProgress(); break; @@ -408,6 +410,7 @@ public class MediaControlView extends FrameLayout /* implements OnLayoutChangeLi pos = mPlayer.getCurrentPosition(); pos += 15000; mPlayer.seekTo(pos); + if (!playing) mPlayer.pause(); // necessary in some 2.3.x devices setProgress(); break; diff --git a/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java b/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java index 4a45975b..b24bf9bb 100644 --- a/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java +++ b/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java @@ -35,6 +35,7 @@ import android.media.MediaPlayer.OnCompletionListener; 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; @@ -352,6 +353,7 @@ public class PreviewMediaFragment extends SherlockFragment implements */ @Override public void onPrepared(MediaPlayer vp) { + Log.e(TAG, "onPrepared"); mVideoPreview.seekTo(mSavedPlaybackPosition); if (mAutoplay) { mVideoPreview.start(); @@ -370,7 +372,23 @@ public class PreviewMediaFragment extends SherlockFragment implements */ @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(); }