diff options
author | Marco Nelissen <marcone@google.com> | 2015-05-29 22:26:56 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-05-29 22:26:58 +0000 |
commit | 2e2ac33e889b76106af6c656aeca2a1ce8f1fc5d (patch) | |
tree | d82a1d0ea3347a476451ecc9c03f8261a0306cad /media/java | |
parent | e9d8480fc13da39905098cd615063482f00b66d7 (diff) | |
parent | b2c890044ed975ab091db0443665ecce293515d4 (diff) | |
download | frameworks_base-2e2ac33e889b76106af6c656aeca2a1ce8f1fc5d.zip frameworks_base-2e2ac33e889b76106af6c656aeca2a1ce8f1fc5d.tar.gz frameworks_base-2e2ac33e889b76106af6c656aeca2a1ce8f1fc5d.tar.bz2 |
Merge "Update ExifInterface.getDateTime to support subseconds" into mnc-dev
Diffstat (limited to 'media/java')
-rw-r--r-- | media/java/android/media/ExifInterface.java | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/media/java/android/media/ExifInterface.java b/media/java/android/media/ExifInterface.java index 9db35fc..aa5d43a 100644 --- a/media/java/android/media/ExifInterface.java +++ b/media/java/android/media/ExifInterface.java @@ -59,6 +59,11 @@ public class ExifInterface { public static final String TAG_ISO = "ISOSpeedRatings"; /** + * @hide + */ + public static final String TAG_SUBSECTIME = "SubSecTime"; + + /** * The altitude (in meters) based on the reference in TAG_GPS_ALTITUDE_REF. * Type is rational. */ @@ -346,7 +351,7 @@ public class ExifInterface { } /** - * Returns number of milliseconds since Jan. 1, 1970, midnight. + * Returns number of milliseconds since Jan. 1, 1970, midnight local time. * Returns -1 if the date time information if not available. * @hide */ @@ -356,9 +361,24 @@ public class ExifInterface { ParsePosition pos = new ParsePosition(0); try { + // The exif field is in local time. Parsing it as if it is UTC will yield time + // since 1/1/1970 local time Date datetime = sFormatter.parse(dateTimeString, pos); if (datetime == null) return -1; - return datetime.getTime(); + long msecs = datetime.getTime(); + + String subSecs = mAttributes.get(TAG_SUBSECTIME); + if (subSecs != null) { + try { + long sub = Long.valueOf(subSecs); + while (sub > 1000) { + sub /= 10; + } + msecs += sub; + } catch (NumberFormatException e) { + } + } + return msecs; } catch (IllegalArgumentException ex) { return -1; } @@ -375,7 +395,6 @@ public class ExifInterface { if (date == null || time == null) return -1; String dateTimeString = date + ' ' + time; - if (dateTimeString == null) return -1; ParsePosition pos = new ParsePosition(0); try { |