diff --git a/android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/MetadataHandler.kt b/android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/MetadataHandler.kt index 37535b3cc..f847b5354 100644 --- a/android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/MetadataHandler.kt +++ b/android/app/src/main/kotlin/deckers/thibault/aves/channel/calls/MetadataHandler.kt @@ -31,12 +31,12 @@ import deckers.thibault.aves.metadata.ExifInterfaceHelper.describeAll import deckers.thibault.aves.metadata.ExifInterfaceHelper.getSafeDateMillis import deckers.thibault.aves.metadata.ExifInterfaceHelper.getSafeInt import deckers.thibault.aves.metadata.MediaMetadataRetrieverHelper +import deckers.thibault.aves.metadata.MediaMetadataRetrieverHelper.getSafeDateMillis import deckers.thibault.aves.metadata.MediaMetadataRetrieverHelper.getSafeDescription import deckers.thibault.aves.metadata.MediaMetadataRetrieverHelper.getSafeInt import deckers.thibault.aves.metadata.Metadata import deckers.thibault.aves.metadata.Metadata.getRotationDegreesForExifCode import deckers.thibault.aves.metadata.Metadata.isFlippedForExifCode -import deckers.thibault.aves.metadata.Metadata.parseVideoMetadataDate import deckers.thibault.aves.metadata.MetadataExtractorHelper.getSafeBoolean import deckers.thibault.aves.metadata.MetadataExtractorHelper.getSafeDateMillis import deckers.thibault.aves.metadata.MetadataExtractorHelper.getSafeDescription @@ -317,15 +317,7 @@ class MetadataHandler(private val context: Context) : MethodCallHandler { val retriever = StorageUtils.openMetadataRetriever(context, uri) ?: return metadataMap try { retriever.getSafeInt(MediaMetadataRetriever.METADATA_KEY_VIDEO_ROTATION) { metadataMap[KEY_ROTATION_DEGREES] = it } - - val dateString = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DATE) - if (dateString != null) { - val dateMillis = parseVideoMetadataDate(dateString) - // some entries have an invalid default date (19040101T000000.000Z) that is before Epoch time - if (dateMillis > 0) { - metadataMap[KEY_DATE_MILLIS] = dateMillis - } - } + retriever.getSafeDateMillis(MediaMetadataRetriever.METADATA_KEY_DATE) { metadataMap[KEY_DATE_MILLIS] = it } val locationString = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_LOCATION) if (locationString != null) { diff --git a/android/app/src/main/kotlin/deckers/thibault/aves/metadata/MediaMetadataRetrieverHelper.kt b/android/app/src/main/kotlin/deckers/thibault/aves/metadata/MediaMetadataRetrieverHelper.kt index ed309f5e7..69bd0f3da 100644 --- a/android/app/src/main/kotlin/deckers/thibault/aves/metadata/MediaMetadataRetrieverHelper.kt +++ b/android/app/src/main/kotlin/deckers/thibault/aves/metadata/MediaMetadataRetrieverHelper.kt @@ -133,11 +133,16 @@ object MediaMetadataRetrieverHelper { else -> value } } - // hide `0` values + // hide default or invalid values MediaMetadataRetriever.METADATA_KEY_COMPILATION, MediaMetadataRetriever.METADATA_KEY_DISC_NUMBER, MediaMetadataRetriever.METADATA_KEY_YEAR -> if (value != "0") value else null MediaMetadataRetriever.METADATA_KEY_CD_TRACK_NUMBER -> if (value != "0/0") value else null + MediaMetadataRetriever.METADATA_KEY_DATE -> { + val dateMillis = Metadata.parseVideoMetadataDate(value) + // some entries have an invalid default date (19040101T000000.000Z) that is before Epoch time + if (dateMillis > 0) value else null + } // hide MediaMetadataRetriever.METADATA_KEY_LOCATION, MediaMetadataRetriever.METADATA_KEY_MIMETYPE -> null diff --git a/android/app/src/main/kotlin/deckers/thibault/aves/metadata/Metadata.kt b/android/app/src/main/kotlin/deckers/thibault/aves/metadata/Metadata.kt index 3ed9f3595..dcf422d27 100644 --- a/android/app/src/main/kotlin/deckers/thibault/aves/metadata/Metadata.kt +++ b/android/app/src/main/kotlin/deckers/thibault/aves/metadata/Metadata.kt @@ -62,7 +62,7 @@ object Metadata { } val date: Date = try { - val parser = SimpleDateFormat("yyyyMMdd'T'HHmmss", Locale.US) + val parser = SimpleDateFormat("yyyyMMdd'T'HHmmss", Locale.ROOT) parser.timeZone = timeZone ?: TimeZone.getTimeZone("GMT") parser.parse(dateString) } catch (e: ParseException) {