diff options
author | Ray Chen <raychen@google.com> | 2010-01-15 13:52:41 -0800 |
---|---|---|
committer | Ray Chen <raychen@google.com> | 2010-02-02 18:59:03 -0800 |
commit | 3a8cab88e7747dc280ce85895af014f98e80a6cc (patch) | |
tree | 8398d06403ffc332c4a3c7002bedf4280dcc2e87 /media/java/android | |
parent | 7099bc10109aec7b532dbe10647f1cba6b2df3a2 (diff) | |
download | frameworks_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.java | 36 | ||||
-rw-r--r-- | media/java/android/media/MediaScanner.java | 2 |
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); } |