MTP: Fix time values returned via GetObjectPropValue and GetObjectPropList

Change-Id: If9bb8b4b19ed6c8d57736e5d1af948fcc946af0e
Signed-off-by: Mike Lockwood <lockwood@android.com>
diff --git a/media/java/android/media/MtpDatabase.java b/media/java/android/media/MtpDatabase.java
index 0d09d4c..42d068f 100644
--- a/media/java/android/media/MtpDatabase.java
+++ b/media/java/android/media/MtpDatabase.java
@@ -30,7 +30,6 @@
 import android.provider.MediaStore.Images;
 import android.provider.MediaStore.MediaColumns;
 import android.provider.Mtp;
-import android.text.format.Time;
 import android.util.Log;
 
 import java.io.File;
@@ -504,14 +503,6 @@
         return path.substring(start, end);
     }
 
-    private String formatDateTime(long seconds) {
-        Time time = new Time(Time.TIMEZONE_UTC);
-        time.set(seconds * 1000);
-        String result = time.format("%Y-%m-%dT%H:%M:%SZ");
-        Log.d(TAG, "formatDateTime returning " + result);
-        return result;
-    }
-
     private MtpPropertyList getObjectPropertyList(int handle, int format, int property,
                         int groupCode, int depth) {
         // FIXME - implement group support
@@ -683,7 +674,7 @@
                     case MtpConstants.PROPERTY_DATE_MODIFIED:
                     case MtpConstants.PROPERTY_DATE_ADDED:
                         // convert from seconds to DateTime
-                        result.setProperty(index, handle, property, formatDateTime(c.getInt(1)));
+                        result.setProperty(index, handle, property, format_date_time(c.getInt(1)));
                         break;
                     case MtpConstants.PROPERTY_ORIGINAL_RELEASE_DATE:
                         // release date is stored internally as just the year
@@ -1029,4 +1020,5 @@
 
     private native final void native_setup();
     private native final void native_finalize();
+    private native String format_date_time(long seconds);
 }
diff --git a/media/jni/android_media_MtpDatabase.cpp b/media/jni/android_media_MtpDatabase.cpp
index aa29de8..5377af6 100644
--- a/media/jni/android_media_MtpDatabase.cpp
+++ b/media/jni/android_media_MtpDatabase.cpp
@@ -1037,11 +1037,25 @@
 #endif
 }
 
+static jstring
+android_media_MtpDatabase_format_date_time(JNIEnv *env, jobject thiz, jlong seconds)
+{
+#ifdef HAVE_ANDROID_OS
+    char    date[20];
+    formatDateTime(seconds, date, sizeof(date));
+    return env->NewStringUTF(date);
+#else
+    return NULL;
+#endif
+}
+
 // ----------------------------------------------------------------------------
 
 static JNINativeMethod gMethods[] = {
     {"native_setup",            "()V",  (void *)android_media_MtpDatabase_setup},
     {"native_finalize",         "()V",  (void *)android_media_MtpDatabase_finalize},
+    {"format_date_time",        "(J)Ljava/lang/String;",
+                                        (void *)android_media_MtpDatabase_format_date_time},
 };
 
 static const char* const kClassPathName = "android/media/MtpDatabase";