X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/053aad5ae17a1ad7a15218c220810e6b369fea4c..5bd3fd6273667db1e44fe20627ba23e7b5a7ab29:/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java diff --git a/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java b/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java index 4a45975b..35afe152 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; @@ -234,8 +235,10 @@ public class PreviewMediaFragment extends SherlockFragment implements outState.putParcelable(PreviewMediaFragment.EXTRA_ACCOUNT, mAccount); if (mFile.isVideo()) { - outState.putInt(PreviewMediaFragment.EXTRA_PLAY_POSITION , mVideoPreview.getCurrentPosition()); - outState.putBoolean(PreviewMediaFragment.EXTRA_PLAYING , mVideoPreview.isPlaying()); + mSavedPlaybackPosition = mVideoPreview.getCurrentPosition(); + mAutoplay = mVideoPreview.isPlaying(); + outState.putInt(PreviewMediaFragment.EXTRA_PLAY_POSITION , mSavedPlaybackPosition); + outState.putBoolean(PreviewMediaFragment.EXTRA_PLAYING , mAutoplay); } else { outState.putInt(PreviewMediaFragment.EXTRA_PLAY_POSITION , mMediaServiceBinder.getCurrentPosition()); outState.putBoolean(PreviewMediaFragment.EXTRA_PLAYING , mMediaServiceBinder.isPlaying()); @@ -352,6 +355,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 +374,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(); }