am 0ff7a463: Merge change 21473 into eclair

Merge commit '0ff7a463ad7fe6ca7b0ab3afcf566bfdc69a00f0'

* commit '0ff7a463ad7fe6ca7b0ab3afcf566bfdc69a00f0':
  Fix 1860351: Put datetime in jpeg exif to datetaken field.
diff --git a/media/java/android/media/ExifInterface.java b/media/java/android/media/ExifInterface.java
index 6d7c0ae..d578c81 100644
--- a/media/java/android/media/ExifInterface.java
+++ b/media/java/android/media/ExifInterface.java
@@ -18,6 +18,9 @@
 
 import android.util.Log;
 
+import java.text.ParsePosition;
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -59,7 +62,7 @@
     // The Exif tag names
     public static final String TAG_ORIENTATION = "Orientation";
 
-    public static final String TAG_DATE_TIME_ORIGINAL = "DateTimeOriginal";
+    public static final String TAG_DATETIME = "DateTime";
     public static final String TAG_MAKE = "Make";
     public static final String TAG_MODEL = "Model";
     public static final String TAG_FLASH = "Flash";
@@ -321,6 +324,28 @@
         return latlng;
     }
 
+    private static SimpleDateFormat sFormatter =
+            new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");
+
+    // Returns number of milliseconds since Jan. 1, 1970, midnight GMT.
+    // Returns -1 if the date time information if not available.
+    public static long getDateTime(HashMap<String, String> exifData) {
+        if (exifData == null) {
+            return -1;
+        }
+
+        String dateTimeString = exifData.get(ExifInterface.TAG_DATETIME);
+        if (dateTimeString == null) return -1;
+
+        ParsePosition pos = new ParsePosition(0);
+        try {
+            Date date = sFormatter.parse(dateTimeString, pos);
+            return date.getTime();
+        } catch (IllegalArgumentException ex) {
+            return -1;
+        }
+    }
+
     public static float convertRationalLatLonToFloat(
             String rationalString, String ref) {
         try {
diff --git a/media/java/android/media/MediaScanner.java b/media/java/android/media/MediaScanner.java
index 376057e..3d5aae3 100644
--- a/media/java/android/media/MediaScanner.java
+++ b/media/java/android/media/MediaScanner.java
@@ -720,6 +720,11 @@
                         values.put(Images.Media.LATITUDE, latlng[0]);
                         values.put(Images.Media.LONGITUDE, latlng[1]);
                     }
+
+                    long time = ExifInterface.getDateTime(exifData);
+                    if (time != -1) {
+                        values.put(Images.Media.DATE_TAKEN, time);
+                    }
                 }
             }