summaryrefslogtreecommitdiffstats
path: root/media/java/android
diff options
context:
space:
mode:
authorRay Chen <raychen@google.com>2010-01-15 13:52:41 -0800
committerRay Chen <raychen@google.com>2010-02-02 18:59:03 -0800
commit3a8cab88e7747dc280ce85895af014f98e80a6cc (patch)
tree8398d06403ffc332c4a3c7002bedf4280dcc2e87 /media/java/android
parent7099bc10109aec7b532dbe10647f1cba6b2df3a2 (diff)
downloadframeworks_base-3a8cab88e7747dc280ce85895af014f98e80a6cc.zip
frameworks_base-3a8cab88e7747dc280ce85895af014f98e80a6cc.tar.gz
frameworks_base-3a8cab88e7747dc280ce85895af014f98e80a6cc.tar.bz2
Add GpsDateTime support to ExifInterface and correct images table's date_taken value to UTC timestamp.
http://b/2376777
Diffstat (limited to 'media/java/android')
-rw-r--r--media/java/android/media/ExifInterface.java36
-rw-r--r--media/java/android/media/MediaScanner.java2
2 files changed, 31 insertions, 7 deletions
diff --git a/media/java/android/media/ExifInterface.java b/media/java/android/media/ExifInterface.java
index ba7e9bb..e9d3372 100644
--- a/media/java/android/media/ExifInterface.java
+++ b/media/java/android/media/ExifInterface.java
@@ -41,6 +41,8 @@ public class ExifInterface {
public static final String TAG_GPS_LONGITUDE = "GPSLongitude";
public static final String TAG_GPS_LATITUDE_REF = "GPSLatitudeRef";
public static final String TAG_GPS_LONGITUDE_REF = "GPSLongitudeRef";
+ public static final String TAG_GPS_TIMESTAMP = "GPSTimeStamp";
+ public static final String TAG_GPS_DATESTAMP = "GPSDateStamp";
public static final String TAG_WHITE_BALANCE = "WhiteBalance";
// Constants used for the Orientation Exif tag.
@@ -62,8 +64,7 @@ public class ExifInterface {
static {
System.loadLibrary("exif");
sFormatter = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");
- //TODO: uncomment this when our EXIF datetime is encoded as UTC
- //sFormatter.setTimeZone(TimeZone.getTimeZone("UTC"));
+ sFormatter.setTimeZone(TimeZone.getTimeZone("UTC"));
}
private String mFilename;
@@ -248,7 +249,7 @@ public class ExifInterface {
}
/**
- * Returns number of milliseconds since Jan. 1, 1970, midnight GMT.
+ * Returns number of milliseconds since Jan. 1, 1970, midnight.
* Returns -1 if the date time information if not available.
* @hide
*/
@@ -258,9 +259,32 @@ public class ExifInterface {
ParsePosition pos = new ParsePosition(0);
try {
- Date date = sFormatter.parse(dateTimeString, pos);
- if (date == null) return -1;
- return date.getTime();
+ Date datetime = sFormatter.parse(dateTimeString, pos);
+ if (datetime == null) return -1;
+ return datetime.getTime();
+ } catch (IllegalArgumentException ex) {
+ return -1;
+ }
+ }
+
+ /**
+ * Returns number of milliseconds since Jan. 1, 1970, midnight UTC.
+ * Returns -1 if the date time information if not available.
+ * @hide
+ */
+ public long getGpsDateTime() {
+ String date = mAttributes.get(TAG_GPS_DATESTAMP);
+ String time = mAttributes.get(TAG_GPS_TIMESTAMP);
+ if (date == null || time == null) return -1;
+
+ String dateTimeString = date + ' ' + time;
+ if (dateTimeString == null) return -1;
+
+ ParsePosition pos = new ParsePosition(0);
+ try {
+ Date datetime = sFormatter.parse(dateTimeString, pos);
+ if (datetime == null) return -1;
+ return datetime.getTime();
} catch (IllegalArgumentException ex) {
return -1;
}
diff --git a/media/java/android/media/MediaScanner.java b/media/java/android/media/MediaScanner.java
index fcb02f4..8c1b0ea 100644
--- a/media/java/android/media/MediaScanner.java
+++ b/media/java/android/media/MediaScanner.java
@@ -744,7 +744,7 @@ public class MediaScanner
values.put(Images.Media.LONGITUDE, latlng[1]);
}
- long time = exif.getDateTime();
+ long time = exif.getGpsDateTime();
if (time != -1) {
values.put(Images.Media.DATE_TAKEN, time);
}