diff options
| author | 2015-05-29 22:26:56 +0000 | |
|---|---|---|
| committer | 2015-05-29 22:26:58 +0000 | |
| commit | 2e2ac33e889b76106af6c656aeca2a1ce8f1fc5d (patch) | |
| tree | d82a1d0ea3347a476451ecc9c03f8261a0306cad | |
| parent | e9d8480fc13da39905098cd615063482f00b66d7 (diff) | |
| parent | b2c890044ed975ab091db0443665ecce293515d4 (diff) | |
Merge "Update ExifInterface.getDateTime to support subseconds" into mnc-dev
| -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 9db35fce7db7..aa5d43a1fa70 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 { |