summaryrefslogtreecommitdiffstats
path: root/media/java
diff options
context:
space:
mode:
authorMarco Nelissen <marcone@google.com>2015-05-29 22:26:56 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-05-29 22:26:58 +0000
commit2e2ac33e889b76106af6c656aeca2a1ce8f1fc5d (patch)
treed82a1d0ea3347a476451ecc9c03f8261a0306cad /media/java
parente9d8480fc13da39905098cd615063482f00b66d7 (diff)
parentb2c890044ed975ab091db0443665ecce293515d4 (diff)
downloadframeworks_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.java25
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 {