From 372f63cd0edcecb17fc67435f3cbc4f317b29e96 Mon Sep 17 00:00:00 2001 From: TheScarastic Date: Wed, 7 Dec 2022 14:30:36 +0000 Subject: [PATCH] Gallery2: Try to extract datetaken from exif if mediastore returns 0 --- src/com/android/gallery3d/data/LocalImage.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/com/android/gallery3d/data/LocalImage.java b/src/com/android/gallery3d/data/LocalImage.java index 1b5c88b26..9ae42f752 100755 --- a/src/com/android/gallery3d/data/LocalImage.java +++ b/src/com/android/gallery3d/data/LocalImage.java @@ -46,6 +46,7 @@ import com.android.gallery3d.util.UpdateHelper; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; +import java.lang.Exception; // LocalImage represents an image in the local storage. public class LocalImage extends LocalMediaItem { @@ -146,6 +147,7 @@ public class LocalImage extends LocalMediaItem { fileSize = cursor.getLong(INDEX_SIZE); width = cursor.getInt(INDEX_WIDTH); height = cursor.getInt(INDEX_HEIGHT); + dateTakenInMs = extractDateTaken(dateTakenInMs); } @Override @@ -156,7 +158,7 @@ public class LocalImage extends LocalMediaItem { latitude = uh.update(latitude, cursor.getDouble(INDEX_LATITUDE)); longitude = uh.update(longitude, cursor.getDouble(INDEX_LONGITUDE)); dateTakenInMs = uh.update( - dateTakenInMs, cursor.getLong(INDEX_DATE_TAKEN)); + dateTakenInMs, extractDateTaken(cursor.getLong(INDEX_DATE_TAKEN))); dateAddedInSec = uh.update( dateAddedInSec, cursor.getLong(INDEX_DATE_ADDED)); dateModifiedInSec = uh.update( @@ -177,6 +179,18 @@ public class LocalImage extends LocalMediaItem { type, filePath, mimeType); } + private long extractDateTaken(long dateTaken) { + if (dateTaken == 0) { + MediaDetails details = super.getDetails(); + MediaDetails.extractExifInfo(details, filePath); + try { + return ExifInterface.DATETIME_FORMAT.parse( + details.getDetail(MediaDetails.INDEX_DATETIME_ORIGINAL).toString()).getTime(); + } catch (Exception e) {} + } + return dateTaken; + } + public static class LocalImageRequest extends ImageCacheRequest { private String mLocalFilePath; -- GitLab