diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c4c541e..91fe322 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -14,7 +14,7 @@ android { applicationId = "com.d4rk.cleaner" minSdk = 26 targetSdk = 34 - versionCode = 76 + versionCode = 77 versionName = "2.0.0" archivesName = "${applicationId}-v${versionName}" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/kotlin/com/d4rk/cleaner/ui/home/HomeComposable.kt b/app/src/main/kotlin/com/d4rk/cleaner/ui/home/HomeComposable.kt index 61ed606..9f88e8a 100644 --- a/app/src/main/kotlin/com/d4rk/cleaner/ui/home/HomeComposable.kt +++ b/app/src/main/kotlin/com/d4rk/cleaner/ui/home/HomeComposable.kt @@ -270,9 +270,12 @@ fun AnalyzeComposable() { } @Composable -fun FileCard(file : File , viewModel : HomeViewModel) { +fun FileCard(file: File, viewModel: HomeViewModel) { val context = LocalContext.current val fileExtension = getFileExtension(file.name) + val thumbnail = remember { + getVideoThumbnail(file.absolutePath, thumbnailWidth = 128, thumbnailHeight = 128) + } Card( modifier = Modifier .fillMaxWidth() @@ -293,10 +296,9 @@ fun FileCard(file : File , viewModel : HomeViewModel) { } in context.resources.getStringArray(R.array.video_extensions).toList() -> { - val thumbnailBitmap = getVideoThumbnail(file.absolutePath) - if (thumbnailBitmap != null) { + if (thumbnail != null) { Image( - bitmap = thumbnailBitmap.asImageBitmap(), + bitmap = thumbnail.asImageBitmap(), contentDescription = file.name, contentScale = ContentScale.Crop, modifier = Modifier.fillMaxSize() @@ -392,4 +394,4 @@ fun SelectAllComposable( interactionSource = interactionSource , ) } -} +} \ No newline at end of file diff --git a/app/src/main/kotlin/com/d4rk/cleaner/utils/ImageUtils.kt b/app/src/main/kotlin/com/d4rk/cleaner/utils/ImageUtils.kt index 407f309..e9002af 100644 --- a/app/src/main/kotlin/com/d4rk/cleaner/utils/ImageUtils.kt +++ b/app/src/main/kotlin/com/d4rk/cleaner/utils/ImageUtils.kt @@ -10,11 +10,14 @@ import android.graphics.drawable.Drawable import android.media.MediaMetadataRetriever import com.d4rk.cleaner.R -fun getVideoThumbnail(videoPath: String): Bitmap? { +fun getVideoThumbnail(videoPath: String, thumbnailWidth: Int = 128, thumbnailHeight: Int = 128): Bitmap? { val mediaMetadataRetriever = MediaMetadataRetriever() try { mediaMetadataRetriever.setDataSource(videoPath) - return mediaMetadataRetriever.getFrameAtTime(1000, MediaMetadataRetriever.OPTION_CLOSEST_SYNC) // Extract frame at 1 second + val bitmap = mediaMetadataRetriever.getFrameAtTime(1000, MediaMetadataRetriever.OPTION_CLOSEST_SYNC) + if (bitmap != null) { + return Bitmap.createScaledBitmap(bitmap, thumbnailWidth, thumbnailHeight, false) + } } catch (_ : Exception) { } finally {