lets require only a file path, instead of FileDir for getting the properties

This commit is contained in:
tibbi
2016-10-16 21:37:06 +02:00
parent d55df91c6c
commit 48454140f2
4 changed files with 93 additions and 70 deletions

View File

@@ -1,9 +1,7 @@
package com.simplemobiletools.filepicker.models
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.media.MediaMetadataRetriever
import java.util.*
class FileDirItem(val path: String, val name: String, val isDirectory: Boolean, val children: Int, val size: Long) :
Comparable<FileDirItem> {
@@ -24,7 +22,6 @@ class FileDirItem(val path: String, val name: String, val isDirectory: Boolean,
fun isGif() = name.toLowerCase().endsWith(".gif")
fun isVideo() = getMimeType().startsWith("video")
fun isAudio() = getMimeType().startsWith("audio")
fun isImage(): Boolean {
val options = BitmapFactory.Options()
@@ -43,48 +40,4 @@ class FileDirItem(val path: String, val name: String, val isDirectory: Boolean,
}
return ""
}
fun getDuration(): String {
val retriever = MediaMetadataRetriever()
retriever.setDataSource(path)
val time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION)
val timeInMillisec = java.lang.Long.parseLong(time)
return getFormattedDuration((timeInMillisec / 1000).toInt())
}
fun getVideoResolution(): String {
try {
val retriever = MediaMetadataRetriever()
retriever.setDataSource(path)
val width = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH)
val height = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT)
return "$width x $height"
} catch (ignored: Exception) {
}
return ""
}
fun getImageResolution(): String {
val bitmap: Bitmap? = BitmapFactory.decodeFile(path)
if (bitmap == null)
return ""
return "${bitmap.width} x ${bitmap.height}"
}
private fun getFormattedDuration(duration: Int): String {
val sb = StringBuilder(8)
val hours = duration / (60 * 60)
val minutes = duration % (60 * 60) / 60
val seconds = duration % (60 * 60) % 60
if (duration > 3600) {
sb.append(String.format(Locale.getDefault(), "%02d", hours)).append(":")
}
sb.append(String.format(Locale.getDefault(), "%02d", minutes))
sb.append(":").append(String.format(Locale.getDefault(), "%02d", seconds))
return sb.toString()
}
}