From 65bd1188b30eeaedb341bcb4687e8625cadff11a Mon Sep 17 00:00:00 2001 From: ivannikitin Date: Tue, 5 Sep 2023 18:38:34 +0200 Subject: [PATCH] Adds mimeType field to Image --- .../features/fileloader/DefaultImageFileLoader.kt | 8 +++++--- .../esafirm/imagepicker/helper/ImagePickerUtils.kt | 13 ++++++++----- .../java/com/esafirm/imagepicker/model/Image.kt | 4 +++- .../com/esafirm/imagepicker/model/ImageFactory.kt | 5 +++-- 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/imagepicker/src/main/java/com/esafirm/imagepicker/features/fileloader/DefaultImageFileLoader.kt b/imagepicker/src/main/java/com/esafirm/imagepicker/features/fileloader/DefaultImageFileLoader.kt index bd5ea4d0..8a935238 100644 --- a/imagepicker/src/main/java/com/esafirm/imagepicker/features/fileloader/DefaultImageFileLoader.kt +++ b/imagepicker/src/main/java/com/esafirm/imagepicker/features/fileloader/DefaultImageFileLoader.kt @@ -79,7 +79,8 @@ class DefaultImageFileLoader(private val context: Context) : ImageFileLoader { MediaStore.Images.Media._ID, MediaStore.Images.Media.DISPLAY_NAME, MediaStore.Images.Media.DATA, - MediaStore.Images.Media.BUCKET_DISPLAY_NAME + MediaStore.Images.Media.BUCKET_DISPLAY_NAME, + MediaStore.Images.Media.MIME_TYPE, ) @SuppressLint("InlinedApi") @@ -155,9 +156,10 @@ class DefaultImageFileLoader(private val context: Context) : ImageFileLoader { val id = cursor.getLong(cursor.getColumnIndex(projection[0])) val name = cursor.getString(cursor.getColumnIndex(projection[1])) + val mimeType = cursor.getString(cursor.getColumnIndex(projection[4])) if (name != null) { - return Image(id, name, path) + return Image(id, name, path, mimeType) } return null } @@ -227,4 +229,4 @@ class DefaultImageFileLoader(private val context: Context) : ImageFileLoader { } } } -} \ No newline at end of file +} diff --git a/imagepicker/src/main/java/com/esafirm/imagepicker/helper/ImagePickerUtils.kt b/imagepicker/src/main/java/com/esafirm/imagepicker/helper/ImagePickerUtils.kt index 807585a2..c12da78b 100644 --- a/imagepicker/src/main/java/com/esafirm/imagepicker/helper/ImagePickerUtils.kt +++ b/imagepicker/src/main/java/com/esafirm/imagepicker/helper/ImagePickerUtils.kt @@ -97,13 +97,16 @@ object ImagePickerUtils { } fun isVideoFormat(image: Image): Boolean { - val extension = getExtension(image.path) - val mimeType = - if (TextUtils.isEmpty(extension)) URLConnection.guessContentTypeFromName(image.path) else MimeTypeMap.getSingleton() - .getMimeTypeFromExtension(extension) + val mimeType = getMimeType(image.path) return mimeType != null && mimeType.startsWith("video") } + fun getMimeType(path: String): String? { + val extension = getExtension(path) + return if (TextUtils.isEmpty(extension)) URLConnection.guessContentTypeFromName(path) else MimeTypeMap.getSingleton() + .getMimeTypeFromExtension(extension) + } + fun getVideoDurationLabel(context: Context?, uri: Uri): String { try { val retriever = MediaMetadataRetriever() @@ -145,4 +148,4 @@ object ImagePickerUtils { data.putParcelableArrayListExtra(IpCons.EXTRA_SELECTED_IMAGES, imageArrayList) return data } -} \ No newline at end of file +} diff --git a/imagepicker/src/main/java/com/esafirm/imagepicker/model/Image.kt b/imagepicker/src/main/java/com/esafirm/imagepicker/model/Image.kt index 44631615..b2d36b01 100644 --- a/imagepicker/src/main/java/com/esafirm/imagepicker/model/Image.kt +++ b/imagepicker/src/main/java/com/esafirm/imagepicker/model/Image.kt @@ -13,6 +13,7 @@ class Image( val id: Long, val name: String, val path: String, + val mimeType: String?, ) : Parcelable { @IgnoredOnParcel @@ -49,6 +50,7 @@ class Image( result = 31 * result + name.hashCode() result = 31 * result + path.hashCode() result = 31 * result + (uriHolder?.hashCode() ?: 0) + result = 31 * result + (mimeType?.hashCode() ?: 0) return result } -} \ No newline at end of file +} diff --git a/imagepicker/src/main/java/com/esafirm/imagepicker/model/ImageFactory.kt b/imagepicker/src/main/java/com/esafirm/imagepicker/model/ImageFactory.kt index dbdff603..2d896408 100644 --- a/imagepicker/src/main/java/com/esafirm/imagepicker/model/ImageFactory.kt +++ b/imagepicker/src/main/java/com/esafirm/imagepicker/model/ImageFactory.kt @@ -10,7 +10,8 @@ object ImageFactory { return listOf(Image( id = ContentUris.parseId(uri), name = ImagePickerUtils.getNameFromFilePath(path), - path = path + path = path, + mimeType = ImagePickerUtils.getMimeType(path), )) } -} \ No newline at end of file +}