diff options
author | Daichi Hirono <hirono@google.com> | 2016-01-06 16:43:32 +0900 |
---|---|---|
committer | Daichi Hirono <hirono@google.com> | 2016-01-08 16:58:24 +0900 |
commit | 1d4779c29a95114c89ec353a8899c0cc8eee3ba5 (patch) | |
tree | 53918eaeb0ccd0a0d89e9d5d232f0aee0062e404 /media/jni/android_mtp_MtpDevice.cpp | |
parent | 359a8ae0af2a103975464bbd6594eec4f166fe47 (diff) |
Add operationsSupported to device info.
Because not all MTP devices support getPartialObject, we need to check
supported operation of MTP devices. The CL adds operationsSupported
field to MtpDeviceInfo class.
BUG=26147375
Change-Id: Iaad968fb4497a5ad11bf6489097abea99c3cbac7
Diffstat (limited to 'media/jni/android_mtp_MtpDevice.cpp')
-rw-r--r-- | media/jni/android_mtp_MtpDevice.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/media/jni/android_mtp_MtpDevice.cpp b/media/jni/android_mtp_MtpDevice.cpp index 14c15e5b8cf9..4aa12c2d6ffc 100644 --- a/media/jni/android_mtp_MtpDevice.cpp +++ b/media/jni/android_mtp_MtpDevice.cpp @@ -27,6 +27,8 @@ #include "jni.h" #include "JNIHelp.h" +#include "ScopedPrimitiveArray.h" + #include "android_runtime/AndroidRuntime.h" #include "android_runtime/Log.h" #include "nativehelper/ScopedLocalRef.h" @@ -63,6 +65,7 @@ static jfieldID field_deviceInfo_manufacturer; static jfieldID field_deviceInfo_model; static jfieldID field_deviceInfo_version; static jfieldID field_deviceInfo_serialNumber; +static jfieldID field_deviceInfo_operationsSupported; // MtpStorageInfo fields static jfieldID field_storageInfo_storageId; @@ -234,6 +237,17 @@ android_mtp_MtpDevice_get_device_info(JNIEnv *env, jobject thiz) if (deviceInfo->mSerial) env->SetObjectField(info, field_deviceInfo_serialNumber, env->NewStringUTF(deviceInfo->mSerial)); + if (deviceInfo->mOperations) { + const size_t size = deviceInfo->mOperations->size(); + const jintArray operations = env->NewIntArray(size); + { + ScopedIntArrayRW elements(env, operations); + for (size_t i = 0; i < size; ++i) { + elements[i] = deviceInfo->mOperations->itemAt(i); + } + } + env->SetObjectField(info, field_deviceInfo_operationsSupported, operations); + } delete deviceInfo; return info; @@ -647,6 +661,11 @@ int register_android_mtp_MtpDevice(JNIEnv *env) ALOGE("Can't find MtpDeviceInfo.mSerialNumber"); return -1; } + field_deviceInfo_operationsSupported = env->GetFieldID(clazz, "mOperationsSupported", "[I"); + if (field_deviceInfo_operationsSupported == NULL) { + ALOGE("Can't find MtpDeviceInfo.mOperationsSupported"); + return -1; + } clazz_deviceInfo = (jclass)env->NewGlobalRef(clazz); clazz = env->FindClass("android/mtp/MtpStorageInfo"); |