From: David A. Velasco Date: Fri, 6 Nov 2015 14:02:57 +0000 (+0100) Subject: Fixed local URI to video files passed to VideoView X-Git-Tag: oc-android-1.9^2~22^2~1 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/2477d496e3cdfe4eb7735a8e8c4e095bc201be61?hp=--cc Fixed local URI to video files passed to VideoView --- 2477d496e3cdfe4eb7735a8e8c4e095bc201be61 diff --git a/src/com/owncloud/android/datamodel/OCFile.java b/src/com/owncloud/android/datamodel/OCFile.java index a6da654d..e5573b6f 100644 --- a/src/com/owncloud/android/datamodel/OCFile.java +++ b/src/com/owncloud/android/datamodel/OCFile.java @@ -20,6 +20,8 @@ package com.owncloud.android.datamodel; +import android.content.ContentResolver; +import android.net.Uri; import android.os.Parcel; import android.os.Parcelable; import android.webkit.MimeTypeMap; @@ -80,6 +82,12 @@ public class OCFile implements Parcelable, Comparable { private boolean mShareWithSharee; + /** + * URI to the local path of the file contents, if stored in the device; cached after first call + * to {@link #getStorageUri()} + */ + private Uri mLocalUri; + /** * Create new {@link OCFile} with given path. @@ -214,12 +222,31 @@ public class OCFile implements Parcelable, Comparable { } /** + * The URI to the file contents, if stored locally + * + * @return A URI to the local copy of the file, or NULL if not stored in the device + */ + public Uri getStorageUri() { + if (mLocalPath == null || mLocalPath.length() == 0) { + return null; + } + if (mLocalUri == null) { + Uri.Builder builder = new Uri.Builder(); + builder.scheme(ContentResolver.SCHEME_FILE); + builder.path(mLocalPath); + mLocalUri = builder.build(); + } + return mLocalUri; + } + + /** * Can be used to set the path where the file is stored * * @param storage_path to set */ public void setStoragePath(String storage_path) { mLocalPath = storage_path; + mLocalUri = null; } /** diff --git a/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java b/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java index 2c5527c0..b0578c2b 100644 --- a/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java +++ b/src/com/owncloud/android/ui/preview/PreviewMediaFragment.java @@ -21,6 +21,7 @@ package com.owncloud.android.ui.preview; import android.accounts.Account; import android.app.Activity; +import android.content.ContentResolver; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.media.MediaMetadataRetriever; @@ -439,8 +440,7 @@ public class PreviewMediaFragment extends FileFragment implements // load the video file in the video player ; // when done, VideoHelper#onPrepared() will be called - Uri uri = Uri.parse(getFile().getStoragePath()); - mVideoPreview.setVideoPath(uri.encode(getFile().getStoragePath())); + mVideoPreview.setVideoURI(getFile().getStorageUri()); } @@ -491,7 +491,7 @@ public class PreviewMediaFragment extends FileFragment implements mVideoPreview.stopPlayback(); mAutoplay = false; mSavedPlaybackPosition = 0; - mVideoPreview.setVideoPath(getFile().getStoragePath()); + mVideoPreview.setVideoURI(getFile().getStorageUri()); } } } // else : called from onError() diff --git a/src/com/owncloud/android/ui/preview/PreviewVideoActivity.java b/src/com/owncloud/android/ui/preview/PreviewVideoActivity.java index 42b7fb28..23188b5e 100644 --- a/src/com/owncloud/android/ui/preview/PreviewVideoActivity.java +++ b/src/com/owncloud/android/ui/preview/PreviewVideoActivity.java @@ -204,8 +204,8 @@ public class PreviewVideoActivity extends FileActivity implements OnCompletionLi file = getStorageManager().getFileById(file.getFileId()); if (file != null) { if (file.isDown()) { - mVideoPlayer.setVideoPath(file.getStoragePath()); - + mVideoPlayer.setVideoURI(file.getStorageUri()); + } else { // not working yet String url; @@ -216,13 +216,13 @@ public class PreviewVideoActivity extends FileActivity implements OnCompletionLi onError(null, MediaService.OC_MEDIA_ERROR, R.string.media_err_no_account); } } - + // create and prepare control panel for the user mMediaController = new MediaController(this); mMediaController.setMediaPlayer(mVideoPlayer); mMediaController.setAnchorView(mVideoPlayer); mVideoPlayer.setMediaController(mMediaController); - + } else { finish(); }