diff options
-rw-r--r-- | media/java/android/mtp/MtpServer.java | 24 | ||||
-rw-r--r-- | media/jni/android_mtp_MtpServer.cpp | 30 |
2 files changed, 48 insertions, 6 deletions
diff --git a/media/java/android/mtp/MtpServer.java b/media/java/android/mtp/MtpServer.java index 3c2ea58e7a2e..44c8b0bde4d9 100644 --- a/media/java/android/mtp/MtpServer.java +++ b/media/java/android/mtp/MtpServer.java @@ -29,9 +29,21 @@ public class MtpServer implements Runnable { System.loadLibrary("media_jni"); } - public MtpServer(MtpDatabase database, boolean usePtp) { + public MtpServer( + MtpDatabase database, + boolean usePtp, + String deviceInfoManufacturer, + String deviceInfoModel, + String deviceInfoDeviceVersion, + String deviceInfoSerialNumber) { mDatabase = database; - native_setup(database, usePtp); + native_setup( + database, + usePtp, + deviceInfoManufacturer, + deviceInfoModel, + deviceInfoDeviceVersion, + deviceInfoSerialNumber); database.setServer(this); } @@ -72,7 +84,13 @@ public class MtpServer implements Runnable { } public static native final void native_configure(boolean usePtp); - private native final void native_setup(MtpDatabase database, boolean usePtp); + private native final void native_setup( + MtpDatabase database, + boolean usePtp, + String deviceInfoManufacturer, + String deviceInfoModel, + String deviceInfoDeviceVersion, + String deviceInfoSerialNumber); private native final void native_run(); private native final void native_cleanup(); private native final void native_send_object_added(int handle); diff --git a/media/jni/android_mtp_MtpServer.cpp b/media/jni/android_mtp_MtpServer.cpp index afd3082ec51b..c325f4ef078b 100644 --- a/media/jni/android_mtp_MtpServer.cpp +++ b/media/jni/android_mtp_MtpServer.cpp @@ -61,10 +61,34 @@ static void android_mtp_configure(JNIEnv *, jobject, jboolean usePtp) { } static void -android_mtp_MtpServer_setup(JNIEnv *env, jobject thiz, jobject javaDatabase, jboolean usePtp) +android_mtp_MtpServer_setup(JNIEnv *env, jobject thiz, jobject javaDatabase, jboolean usePtp, + jstring deviceInfoManufacturer, + jstring deviceInfoModel, + jstring deviceInfoDeviceVersion, + jstring deviceInfoSerialNumber) { + const char *deviceInfoManufacturerStr = env->GetStringUTFChars(deviceInfoManufacturer, NULL); + const char *deviceInfoModelStr = env->GetStringUTFChars(deviceInfoModel, NULL); + const char *deviceInfoDeviceVersionStr = env->GetStringUTFChars(deviceInfoDeviceVersion, NULL); + const char *deviceInfoSerialNumberStr = env->GetStringUTFChars(deviceInfoSerialNumber, NULL); MtpServer* server = new MtpServer(getMtpDatabase(env, javaDatabase), - usePtp, AID_MEDIA_RW, 0664, 0775); + usePtp, AID_MEDIA_RW, 0664, 0775, + MtpString((deviceInfoManufacturerStr != NULL) ? deviceInfoManufacturerStr : ""), + MtpString((deviceInfoModelStr != NULL) ? deviceInfoModelStr : ""), + MtpString((deviceInfoDeviceVersionStr != NULL) ? deviceInfoDeviceVersionStr : ""), + MtpString((deviceInfoSerialNumberStr != NULL) ? deviceInfoSerialNumberStr : "")); + if (deviceInfoManufacturerStr != NULL) { + env->ReleaseStringUTFChars(deviceInfoManufacturer, deviceInfoManufacturerStr); + } + if (deviceInfoModelStr != NULL) { + env->ReleaseStringUTFChars(deviceInfoModel, deviceInfoModelStr); + } + if (deviceInfoDeviceVersionStr != NULL) { + env->ReleaseStringUTFChars(deviceInfoDeviceVersion, deviceInfoDeviceVersionStr); + } + if (deviceInfoSerialNumberStr != NULL) { + env->ReleaseStringUTFChars(deviceInfoSerialNumber, deviceInfoSerialNumberStr); + } env->SetLongField(thiz, field_MtpServer_nativeContext, (jlong)server); } @@ -180,7 +204,7 @@ android_mtp_MtpServer_remove_storage(JNIEnv *env, jobject thiz, jint storageId) static const JNINativeMethod gMethods[] = { {"native_configure", "(Z)V", (void *)android_mtp_configure}, - {"native_setup", "(Landroid/mtp/MtpDatabase;Z)V", + {"native_setup", "(Landroid/mtp/MtpDatabase;ZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V", (void *)android_mtp_MtpServer_setup}, {"native_run", "()V", (void *)android_mtp_MtpServer_run}, {"native_cleanup", "()V", (void *)android_mtp_MtpServer_cleanup}, |