move some properties fetching functions in string extension
This commit is contained in:
parent
8af2a3d606
commit
39eb430896
2 changed files with 56 additions and 40 deletions
|
@ -12,7 +12,6 @@ import com.simplemobiletools.commons.extensions.*
|
||||||
import kotlinx.android.synthetic.main.dialog_properties.view.*
|
import kotlinx.android.synthetic.main.dialog_properties.view.*
|
||||||
import kotlinx.android.synthetic.main.property_item.view.*
|
import kotlinx.android.synthetic.main.property_item.view.*
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.text.SimpleDateFormat
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class PropertiesDialog() {
|
class PropertiesDialog() {
|
||||||
|
@ -127,15 +126,9 @@ class PropertiesDialog() {
|
||||||
|
|
||||||
private fun addExifProperties(path: String) {
|
private fun addExifProperties(path: String) {
|
||||||
val exif = ExifInterface(path)
|
val exif = ExifInterface(path)
|
||||||
exif.getAttribute(ExifInterface.TAG_DATETIME).let {
|
val dateTaken = path.getFileExifDateTaken()
|
||||||
if (it?.isNotEmpty() == true) {
|
if (dateTaken.isNotEmpty()) {
|
||||||
try {
|
|
||||||
val simpleDateFormat = SimpleDateFormat("yyyy:MM:dd kk:mm:ss", Locale.ENGLISH)
|
|
||||||
val dateTaken = simpleDateFormat.parse(it).time.formatLastModified()
|
|
||||||
addProperty(R.string.date_taken, dateTaken)
|
addProperty(R.string.date_taken, dateTaken)
|
||||||
} catch (ignored: Exception) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
exif.getAttribute(ExifInterface.TAG_MAKE).let {
|
exif.getAttribute(ExifInterface.TAG_MAKE).let {
|
||||||
|
@ -145,36 +138,8 @@ class PropertiesDialog() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var exifString = ""
|
val exifString = path.getFileExifProperties()
|
||||||
exif.getAttribute(ExifInterface.TAG_F_NUMBER).let {
|
if (exifString.isNotEmpty())
|
||||||
if (it?.isNotEmpty() == true) {
|
|
||||||
val number = it.trimEnd('0').trimEnd('.')
|
|
||||||
exifString += "F/$number "
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
exif.getAttribute(ExifInterface.TAG_FOCAL_LENGTH).let {
|
|
||||||
if (it?.isNotEmpty() == true) {
|
|
||||||
val values = it.split('/')
|
|
||||||
val focalLength = "${Math.round(values[0].toDouble() / values[1].toDouble())}mm"
|
|
||||||
exifString += "$focalLength "
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
exif.getAttribute(ExifInterface.TAG_EXPOSURE_TIME).let {
|
|
||||||
if (it?.isNotEmpty() == true) {
|
|
||||||
val exposureSec = (1 / it.toFloat()).toInt()
|
|
||||||
exifString += "1/${exposureSec}s "
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
exif.getAttribute(ExifInterface.TAG_ISO_SPEED_RATINGS).let {
|
|
||||||
if (it?.isNotEmpty() == true) {
|
|
||||||
exifString += "ISO-$it"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (exifString.trim().isNotEmpty())
|
|
||||||
addProperty(R.string.exif, exifString.trim())
|
addProperty(R.string.exif, exifString.trim())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package com.simplemobiletools.commons.extensions
|
package com.simplemobiletools.commons.extensions
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.media.ExifInterface
|
||||||
|
import java.text.SimpleDateFormat
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
fun String.getFilenameFromPath() = substring(lastIndexOf("/") + 1)
|
fun String.getFilenameFromPath() = substring(lastIndexOf("/") + 1)
|
||||||
|
@ -37,11 +39,60 @@ fun String.isPng() = endsWith(".png", true)
|
||||||
|
|
||||||
// fast extension checks, not guaranteed to be accurate
|
// fast extension checks, not guaranteed to be accurate
|
||||||
fun String.isVideoFast() = videoExtensions.any { endsWith(it, true) }
|
fun String.isVideoFast() = videoExtensions.any { endsWith(it, true) }
|
||||||
|
|
||||||
fun String.isImageFast() = photoExtensions.any { endsWith(it, true) }
|
fun String.isImageFast() = photoExtensions.any { endsWith(it, true) }
|
||||||
fun String.isAudioFast() = audioExtensions.any { endsWith(it, true) }
|
fun String.isAudioFast() = audioExtensions.any { endsWith(it, true) }
|
||||||
|
|
||||||
fun String.areDigitsOnly() = matches(Regex("[0-9]+"))
|
fun String.areDigitsOnly() = matches(Regex("[0-9]+"))
|
||||||
|
|
||||||
|
fun String.getFileExifProperties(): String {
|
||||||
|
val exif = ExifInterface(this)
|
||||||
|
var exifString = ""
|
||||||
|
exif.getAttribute(ExifInterface.TAG_F_NUMBER).let {
|
||||||
|
if (it?.isNotEmpty() == true) {
|
||||||
|
val number = it.trimEnd('0').trimEnd('.')
|
||||||
|
exifString += "F/$number "
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exif.getAttribute(ExifInterface.TAG_FOCAL_LENGTH).let {
|
||||||
|
if (it?.isNotEmpty() == true) {
|
||||||
|
val values = it.split('/')
|
||||||
|
val focalLength = "${Math.round(values[0].toDouble() / values[1].toDouble())}mm"
|
||||||
|
exifString += "$focalLength "
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exif.getAttribute(ExifInterface.TAG_EXPOSURE_TIME).let {
|
||||||
|
if (it?.isNotEmpty() == true) {
|
||||||
|
val exposureSec = (1 / it.toFloat()).toInt()
|
||||||
|
exifString += "1/${exposureSec}s "
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exif.getAttribute(ExifInterface.TAG_ISO_SPEED_RATINGS).let {
|
||||||
|
if (it?.isNotEmpty() == true) {
|
||||||
|
exifString += "ISO-$it"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return exifString.trim()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun String.getFileExifDateTaken(): String {
|
||||||
|
val exif = ExifInterface(this)
|
||||||
|
exif.getAttribute(ExifInterface.TAG_DATETIME).let {
|
||||||
|
if (it?.isNotEmpty() == true) {
|
||||||
|
try {
|
||||||
|
val simpleDateFormat = SimpleDateFormat("yyyy:MM:dd kk:mm:ss", Locale.ENGLISH)
|
||||||
|
return simpleDateFormat.parse(it).time.formatLastModified().trim()
|
||||||
|
} catch (ignored: Exception) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
fun String.getMimeTypeFromPath(): String {
|
fun String.getMimeTypeFromPath(): String {
|
||||||
val typesMap = HashMap<String, String>().apply {
|
val typesMap = HashMap<String, String>().apply {
|
||||||
put("323", "text/h323")
|
put("323", "text/h323")
|
||||||
|
|
Loading…
Reference in a new issue