mirror of
https://github.com/oxen-io/session-android.git
synced 2025-06-09 14:38:33 +00:00
Fix DecryptableStreamLocalUriFetcher bug for external video thumbnails.
Fix bug where external video thumbnails do not appear.
This commit is contained in:
parent
d1a6582ad7
commit
faafa40122
@ -4,10 +4,10 @@ import android.content.ContentResolver;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import org.thoughtcrime.securesms.logging.Log;
|
|
||||||
|
|
||||||
import com.bumptech.glide.load.data.StreamLocalUriFetcher;
|
import com.bumptech.glide.load.data.StreamLocalUriFetcher;
|
||||||
|
|
||||||
|
import org.thoughtcrime.securesms.logging.Log;
|
||||||
import org.thoughtcrime.securesms.util.MediaUtil;
|
import org.thoughtcrime.securesms.util.MediaUtil;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
|
@ -3,6 +3,7 @@ package org.thoughtcrime.securesms.util;
|
|||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
|
import android.media.ThumbnailUtils;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.provider.MediaStore;
|
import android.provider.MediaStore;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
@ -33,6 +34,7 @@ import org.thoughtcrime.securesms.mms.VideoSlide;
|
|||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.net.URLConnection;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
|
|
||||||
public class MediaUtil {
|
public class MediaUtil {
|
||||||
@ -242,7 +244,7 @@ public class MediaUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean hasVideoThumbnail(Uri uri) {
|
public static boolean hasVideoThumbnail(Uri uri) {
|
||||||
if (uri == null || !ContentResolver.SCHEME_CONTENT.equals(uri.getScheme())) {
|
if (uri == null || !isSupportedVideoUriScheme(uri.getScheme())) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -250,9 +252,12 @@ public class MediaUtil {
|
|||||||
return uri.getLastPathSegment().contains("video");
|
return uri.getLastPathSegment().contains("video");
|
||||||
} else if (uri.toString().startsWith(MediaStore.Video.Media.EXTERNAL_CONTENT_URI.toString())) {
|
} else if (uri.toString().startsWith(MediaStore.Video.Media.EXTERNAL_CONTENT_URI.toString())) {
|
||||||
return true;
|
return true;
|
||||||
|
} else if (uri.toString().startsWith("file://") &&
|
||||||
|
MediaUtil.isVideo(URLConnection.guessContentTypeFromName(uri.toString()))) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static @Nullable Bitmap getVideoThumbnail(Context context, Uri uri) {
|
public static @Nullable Bitmap getVideoThumbnail(Context context, Uri uri) {
|
||||||
@ -270,6 +275,10 @@ public class MediaUtil {
|
|||||||
videoId,
|
videoId,
|
||||||
MediaStore.Images.Thumbnails.MINI_KIND,
|
MediaStore.Images.Thumbnails.MINI_KIND,
|
||||||
null);
|
null);
|
||||||
|
} else if (uri.toString().startsWith("file://") &&
|
||||||
|
MediaUtil.isVideo(URLConnection.guessContentTypeFromName(uri.toString()))) {
|
||||||
|
return ThumbnailUtils.createVideoThumbnail(uri.toString().replace("file://", ""),
|
||||||
|
MediaStore.Video.Thumbnails.MINI_KIND);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@ -307,4 +316,9 @@ public class MediaUtil {
|
|||||||
bitmap.recycle();
|
bitmap.recycle();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean isSupportedVideoUriScheme(@Nullable String scheme) {
|
||||||
|
return ContentResolver.SCHEME_CONTENT.equals(scheme) ||
|
||||||
|
ContentResolver.SCHEME_FILE.equals(scheme);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user