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";