diff options
author | BeYkeRYkt <beykerykt@gmail.com> | 2020-06-01 20:29:25 +0900 |
---|---|---|
committer | Bruno Martins <bgcngm@gmail.com> | 2020-06-08 22:25:52 +0200 |
commit | 7fb12a53797692334169c128aa881b296178d300 (patch) | |
tree | edc6a857f883afadb2b10f05f8af4ef24660511c | |
parent | 24b6e974da038425f7ecfc7ae12a488b0c924e39 (diff) | |
download | android_packages_providers_MediaProvider-lineage-17.1.tar.gz android_packages_providers_MediaProvider-lineage-17.1.tar.bz2 android_packages_providers_MediaProvider-lineage-17.1.zip |
MediaProvider: Fix sorting by DATE_TAKENlineage-17.1
* Verify that originalTime is valid. If originalTime is not valid, try using the
DateTime tag. If both of these variables are not valid, then just return
lastModifiedTime.
* Return originalTime when the image has originalTime but does not have gpsTime
and lastModifiedTime to correctly report the time.
Change-Id: Id93efcea937ca39037db431108dd0dbee43c29b7
-rw-r--r-- | src/com/android/providers/media/scan/ModernMediaScanner.java | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/com/android/providers/media/scan/ModernMediaScanner.java b/src/com/android/providers/media/scan/ModernMediaScanner.java index d9e9859c..fe0e5cf7 100644 --- a/src/com/android/providers/media/scan/ModernMediaScanner.java +++ b/src/com/android/providers/media/scan/ModernMediaScanner.java @@ -818,6 +818,18 @@ public class ModernMediaScanner implements MediaScanner { static @NonNull Optional<Long> parseOptionalDateTaken(@NonNull ExifInterface exif, @CurrentTimeMillisLong long lastModifiedTime) { final long originalTime = exif.getDateTimeOriginal(); + + // First check that originalTime is valid + if (originalTime == -1) { + // Try use DateTime tag if originalTime is not valid + final long dateTime = exif.getDateTime(); + if (dateTime == -1) { + // If originalTime and dateTime is not valid, then just return lastModifiedTime + return Optional.of(lastModifiedTime); + } + return Optional.of(dateTime); + } + if (exif.hasAttribute(ExifInterface.TAG_OFFSET_TIME_ORIGINAL)) { // We have known offset information, return it directly! return Optional.of(originalTime); @@ -839,7 +851,7 @@ public class ModernMediaScanner implements MediaScanner { return Optional.of(originalTime + rounded); } } - return Optional.empty(); + return Optional.of(originalTime); } } |