summaryrefslogtreecommitdiff
path: root/media/jni/android_mtp_MtpDevice.cpp
diff options
context:
space:
mode:
authorDaichi Hirono <hirono@google.com>2016-01-06 16:43:32 +0900
committerDaichi Hirono <hirono@google.com>2016-01-08 16:58:24 +0900
commit1d4779c29a95114c89ec353a8899c0cc8eee3ba5 (patch)
tree53918eaeb0ccd0a0d89e9d5d232f0aee0062e404 /media/jni/android_mtp_MtpDevice.cpp
parent359a8ae0af2a103975464bbd6594eec4f166fe47 (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.cpp19
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");