Merge "Add varietions of MtpDevice's mehtods using long."

This commit is contained in:
Daichi Hirono
2016-01-28 02:56:34 +00:00
committed by Android (Google) Code Review
6 changed files with 214 additions and 75 deletions

View File

@@ -23151,7 +23151,7 @@ package android.mtp {
method public boolean importFile(int, android.os.ParcelFileDescriptor);
method public boolean open(android.hardware.usb.UsbDeviceConnection);
method public android.mtp.MtpEvent readEvent(android.os.CancellationSignal);
method public boolean sendObject(int, int, android.os.ParcelFileDescriptor);
method public boolean sendObject(int, long, android.os.ParcelFileDescriptor);
method public android.mtp.MtpObjectInfo sendObjectInfo(android.mtp.MtpObjectInfo);
}
@@ -23182,23 +23182,31 @@ package android.mtp {
method public final int getAssociationDesc();
method public final int getAssociationType();
method public final int getCompressedSize();
method public final long getCompressedSizeLong();
method public final long getDateCreated();
method public final long getDateModified();
method public final int getFormat();
method public final int getImagePixDepth();
method public final long getImagePixDepthLong();
method public final int getImagePixHeight();
method public final long getImagePixHeightLong();
method public final int getImagePixWidth();
method public final long getImagePixWidthLong();
method public final java.lang.String getKeywords();
method public final java.lang.String getName();
method public final int getObjectHandle();
method public final int getParent();
method public final int getProtectionStatus();
method public final int getSequenceNumber();
method public final long getSequenceNumberLong();
method public final int getStorageId();
method public final int getThumbCompressedSize();
method public final long getThumbCompressedSizeLong();
method public final int getThumbFormat();
method public final int getThumbPixHeight();
method public final long getThumbPixHeightLong();
method public final int getThumbPixWidth();
method public final long getThumbPixWidthLong();
}
public static class MtpObjectInfo.Builder {
@@ -23207,24 +23215,24 @@ package android.mtp {
method public android.mtp.MtpObjectInfo build();
method public android.mtp.MtpObjectInfo.Builder setAssociationDesc(int);
method public android.mtp.MtpObjectInfo.Builder setAssociationType(int);
method public android.mtp.MtpObjectInfo.Builder setCompressedSize(int);
method public android.mtp.MtpObjectInfo.Builder setCompressedSize(long);
method public android.mtp.MtpObjectInfo.Builder setDateCreated(long);
method public android.mtp.MtpObjectInfo.Builder setDateModified(long);
method public android.mtp.MtpObjectInfo.Builder setFormat(int);
method public android.mtp.MtpObjectInfo.Builder setImagePixDepth(int);
method public android.mtp.MtpObjectInfo.Builder setImagePixHeight(int);
method public android.mtp.MtpObjectInfo.Builder setImagePixWidth(int);
method public android.mtp.MtpObjectInfo.Builder setImagePixDepth(long);
method public android.mtp.MtpObjectInfo.Builder setImagePixHeight(long);
method public android.mtp.MtpObjectInfo.Builder setImagePixWidth(long);
method public android.mtp.MtpObjectInfo.Builder setKeywords(java.lang.String);
method public android.mtp.MtpObjectInfo.Builder setName(java.lang.String);
method public android.mtp.MtpObjectInfo.Builder setObjectHandle(int);
method public android.mtp.MtpObjectInfo.Builder setParent(int);
method public android.mtp.MtpObjectInfo.Builder setProtectionStatus(int);
method public android.mtp.MtpObjectInfo.Builder setSequenceNumber(int);
method public android.mtp.MtpObjectInfo.Builder setSequenceNumber(long);
method public android.mtp.MtpObjectInfo.Builder setStorageId(int);
method public android.mtp.MtpObjectInfo.Builder setThumbCompressedSize(int);
method public android.mtp.MtpObjectInfo.Builder setThumbCompressedSize(long);
method public android.mtp.MtpObjectInfo.Builder setThumbFormat(int);
method public android.mtp.MtpObjectInfo.Builder setThumbPixHeight(int);
method public android.mtp.MtpObjectInfo.Builder setThumbPixWidth(int);
method public android.mtp.MtpObjectInfo.Builder setThumbPixHeight(long);
method public android.mtp.MtpObjectInfo.Builder setThumbPixWidth(long);
}
public final class MtpStorageInfo {

View File

@@ -24538,7 +24538,7 @@ package android.mtp {
method public boolean importFile(int, android.os.ParcelFileDescriptor);
method public boolean open(android.hardware.usb.UsbDeviceConnection);
method public android.mtp.MtpEvent readEvent(android.os.CancellationSignal);
method public boolean sendObject(int, int, android.os.ParcelFileDescriptor);
method public boolean sendObject(int, long, android.os.ParcelFileDescriptor);
method public android.mtp.MtpObjectInfo sendObjectInfo(android.mtp.MtpObjectInfo);
}
@@ -24569,23 +24569,31 @@ package android.mtp {
method public final int getAssociationDesc();
method public final int getAssociationType();
method public final int getCompressedSize();
method public final long getCompressedSizeLong();
method public final long getDateCreated();
method public final long getDateModified();
method public final int getFormat();
method public final int getImagePixDepth();
method public final long getImagePixDepthLong();
method public final int getImagePixHeight();
method public final long getImagePixHeightLong();
method public final int getImagePixWidth();
method public final long getImagePixWidthLong();
method public final java.lang.String getKeywords();
method public final java.lang.String getName();
method public final int getObjectHandle();
method public final int getParent();
method public final int getProtectionStatus();
method public final int getSequenceNumber();
method public final long getSequenceNumberLong();
method public final int getStorageId();
method public final int getThumbCompressedSize();
method public final long getThumbCompressedSizeLong();
method public final int getThumbFormat();
method public final int getThumbPixHeight();
method public final long getThumbPixHeightLong();
method public final int getThumbPixWidth();
method public final long getThumbPixWidthLong();
}
public static class MtpObjectInfo.Builder {
@@ -24594,24 +24602,24 @@ package android.mtp {
method public android.mtp.MtpObjectInfo build();
method public android.mtp.MtpObjectInfo.Builder setAssociationDesc(int);
method public android.mtp.MtpObjectInfo.Builder setAssociationType(int);
method public android.mtp.MtpObjectInfo.Builder setCompressedSize(int);
method public android.mtp.MtpObjectInfo.Builder setCompressedSize(long);
method public android.mtp.MtpObjectInfo.Builder setDateCreated(long);
method public android.mtp.MtpObjectInfo.Builder setDateModified(long);
method public android.mtp.MtpObjectInfo.Builder setFormat(int);
method public android.mtp.MtpObjectInfo.Builder setImagePixDepth(int);
method public android.mtp.MtpObjectInfo.Builder setImagePixHeight(int);
method public android.mtp.MtpObjectInfo.Builder setImagePixWidth(int);
method public android.mtp.MtpObjectInfo.Builder setImagePixDepth(long);
method public android.mtp.MtpObjectInfo.Builder setImagePixHeight(long);
method public android.mtp.MtpObjectInfo.Builder setImagePixWidth(long);
method public android.mtp.MtpObjectInfo.Builder setKeywords(java.lang.String);
method public android.mtp.MtpObjectInfo.Builder setName(java.lang.String);
method public android.mtp.MtpObjectInfo.Builder setObjectHandle(int);
method public android.mtp.MtpObjectInfo.Builder setParent(int);
method public android.mtp.MtpObjectInfo.Builder setProtectionStatus(int);
method public android.mtp.MtpObjectInfo.Builder setSequenceNumber(int);
method public android.mtp.MtpObjectInfo.Builder setSequenceNumber(long);
method public android.mtp.MtpObjectInfo.Builder setStorageId(int);
method public android.mtp.MtpObjectInfo.Builder setThumbCompressedSize(int);
method public android.mtp.MtpObjectInfo.Builder setThumbCompressedSize(long);
method public android.mtp.MtpObjectInfo.Builder setThumbFormat(int);
method public android.mtp.MtpObjectInfo.Builder setThumbPixHeight(int);
method public android.mtp.MtpObjectInfo.Builder setThumbPixWidth(int);
method public android.mtp.MtpObjectInfo.Builder setThumbPixHeight(long);
method public android.mtp.MtpObjectInfo.Builder setThumbPixWidth(long);
}
public final class MtpStorageInfo {

View File

@@ -23160,7 +23160,7 @@ package android.mtp {
method public boolean importFile(int, android.os.ParcelFileDescriptor);
method public boolean open(android.hardware.usb.UsbDeviceConnection);
method public android.mtp.MtpEvent readEvent(android.os.CancellationSignal);
method public boolean sendObject(int, int, android.os.ParcelFileDescriptor);
method public boolean sendObject(int, long, android.os.ParcelFileDescriptor);
method public android.mtp.MtpObjectInfo sendObjectInfo(android.mtp.MtpObjectInfo);
}
@@ -23191,23 +23191,31 @@ package android.mtp {
method public final int getAssociationDesc();
method public final int getAssociationType();
method public final int getCompressedSize();
method public final long getCompressedSizeLong();
method public final long getDateCreated();
method public final long getDateModified();
method public final int getFormat();
method public final int getImagePixDepth();
method public final long getImagePixDepthLong();
method public final int getImagePixHeight();
method public final long getImagePixHeightLong();
method public final int getImagePixWidth();
method public final long getImagePixWidthLong();
method public final java.lang.String getKeywords();
method public final java.lang.String getName();
method public final int getObjectHandle();
method public final int getParent();
method public final int getProtectionStatus();
method public final int getSequenceNumber();
method public final long getSequenceNumberLong();
method public final int getStorageId();
method public final int getThumbCompressedSize();
method public final long getThumbCompressedSizeLong();
method public final int getThumbFormat();
method public final int getThumbPixHeight();
method public final long getThumbPixHeightLong();
method public final int getThumbPixWidth();
method public final long getThumbPixWidthLong();
}
public static class MtpObjectInfo.Builder {
@@ -23216,24 +23224,24 @@ package android.mtp {
method public android.mtp.MtpObjectInfo build();
method public android.mtp.MtpObjectInfo.Builder setAssociationDesc(int);
method public android.mtp.MtpObjectInfo.Builder setAssociationType(int);
method public android.mtp.MtpObjectInfo.Builder setCompressedSize(int);
method public android.mtp.MtpObjectInfo.Builder setCompressedSize(long);
method public android.mtp.MtpObjectInfo.Builder setDateCreated(long);
method public android.mtp.MtpObjectInfo.Builder setDateModified(long);
method public android.mtp.MtpObjectInfo.Builder setFormat(int);
method public android.mtp.MtpObjectInfo.Builder setImagePixDepth(int);
method public android.mtp.MtpObjectInfo.Builder setImagePixHeight(int);
method public android.mtp.MtpObjectInfo.Builder setImagePixWidth(int);
method public android.mtp.MtpObjectInfo.Builder setImagePixDepth(long);
method public android.mtp.MtpObjectInfo.Builder setImagePixHeight(long);
method public android.mtp.MtpObjectInfo.Builder setImagePixWidth(long);
method public android.mtp.MtpObjectInfo.Builder setKeywords(java.lang.String);
method public android.mtp.MtpObjectInfo.Builder setName(java.lang.String);
method public android.mtp.MtpObjectInfo.Builder setObjectHandle(int);
method public android.mtp.MtpObjectInfo.Builder setParent(int);
method public android.mtp.MtpObjectInfo.Builder setProtectionStatus(int);
method public android.mtp.MtpObjectInfo.Builder setSequenceNumber(int);
method public android.mtp.MtpObjectInfo.Builder setSequenceNumber(long);
method public android.mtp.MtpObjectInfo.Builder setStorageId(int);
method public android.mtp.MtpObjectInfo.Builder setThumbCompressedSize(int);
method public android.mtp.MtpObjectInfo.Builder setThumbCompressedSize(long);
method public android.mtp.MtpObjectInfo.Builder setThumbFormat(int);
method public android.mtp.MtpObjectInfo.Builder setThumbPixHeight(int);
method public android.mtp.MtpObjectInfo.Builder setThumbPixWidth(int);
method public android.mtp.MtpObjectInfo.Builder setThumbPixHeight(long);
method public android.mtp.MtpObjectInfo.Builder setThumbPixWidth(long);
}
public final class MtpStorageInfo {

View File

@@ -153,10 +153,11 @@ public final class MtpDevice {
*
* @param objectHandle handle of the object to read
* @param objectSize the size of the object (this should match
* {@link MtpObjectInfo#getCompressedSize}
* {@link MtpObjectInfo#getCompressedSize})
* @return the object's data, or null if reading fails
*/
public byte[] getObject(int objectHandle, int objectSize) {
Preconditions.checkArgumentNonnegative(objectSize, "objectSize should not be negative");
return native_get_object(objectHandle, objectSize);
}
@@ -284,7 +285,7 @@ public final class MtpDevice {
* @param descriptor file descriptor to read the data from.
* @return true if the file transfer succeeds
*/
public boolean sendObject(int objectHandle, int size, ParcelFileDescriptor descriptor) {
public boolean sendObject(int objectHandle, long size, ParcelFileDescriptor descriptor) {
return native_send_object(objectHandle, size, descriptor.getFd());
}
@@ -343,16 +344,16 @@ public final class MtpDevice {
private native MtpStorageInfo native_get_storage_info(int storageId);
private native int[] native_get_object_handles(int storageId, int format, int objectHandle);
private native MtpObjectInfo native_get_object_info(int objectHandle);
private native byte[] native_get_object(int objectHandle, int objectSize);
private native byte[] native_get_object(int objectHandle, long objectSize);
private native long native_get_partial_object(
int objectHandle, long offset, long objectSize, byte[] buffer) throws IOException;
private native byte[] native_get_thumbnail(int objectHandle);
private native boolean native_delete_object(int objectHandle);
private native long native_get_parent(int objectHandle);
private native long native_get_storage_id(int objectHandle);
private native int native_get_parent(int objectHandle);
private native int native_get_storage_id(int objectHandle);
private native boolean native_import_file(int objectHandle, String destPath);
private native boolean native_import_file(int objectHandle, int fd);
private native boolean native_send_object(int objectHandle, int size, int fd);
private native boolean native_send_object(int objectHandle, long size, int fd);
private native MtpObjectInfo native_send_object_info(MtpObjectInfo info);
private native int native_submit_event_request();
private native MtpEvent native_reap_event_request(int handle);

View File

@@ -16,6 +16,8 @@
package android.mtp;
import com.android.internal.util.Preconditions;
/**
* This class encapsulates information about an object on an MTP device.
* This corresponds to the ObjectInfo Dataset described in
@@ -96,9 +98,19 @@ public final class MtpObjectInfo {
* @return the object size
*/
public final int getCompressedSize() {
Preconditions.checkState(mCompressedSize >= 0);
return mCompressedSize;
}
/**
* Returns the size of the MTP object
*
* @return the object size
*/
public final long getCompressedSizeLong() {
return uint32ToLong(mCompressedSize);
}
/**
* Returns the format code for the MTP object's thumbnail
* Will be zero for objects with no thumbnail
@@ -116,9 +128,20 @@ public final class MtpObjectInfo {
* @return the thumbnail size
*/
public final int getThumbCompressedSize() {
Preconditions.checkState(mThumbCompressedSize >= 0);
return mThumbCompressedSize;
}
/**
* Returns the size of the MTP object's thumbnail
* Will be zero for objects with no thumbnail
*
* @return the thumbnail size
*/
public final long getThumbCompressedSizeLong() {
return uint32ToLong(mThumbCompressedSize);
}
/**
* Returns the width of the MTP object's thumbnail in pixels
* Will be zero for objects with no thumbnail
@@ -126,9 +149,20 @@ public final class MtpObjectInfo {
* @return the thumbnail width
*/
public final int getThumbPixWidth() {
Preconditions.checkState(mThumbPixWidth >= 0);
return mThumbPixWidth;
}
/**
* Returns the width of the MTP object's thumbnail in pixels
* Will be zero for objects with no thumbnail
*
* @return the thumbnail width
*/
public final long getThumbPixWidthLong() {
return uint32ToLong(mThumbPixWidth);
}
/**
* Returns the height of the MTP object's thumbnail in pixels
* Will be zero for objects with no thumbnail
@@ -136,9 +170,20 @@ public final class MtpObjectInfo {
* @return the thumbnail height
*/
public final int getThumbPixHeight() {
Preconditions.checkState(mThumbPixHeight >= 0);
return mThumbPixHeight;
}
/**
* Returns the height of the MTP object's thumbnail in pixels
* Will be zero for objects with no thumbnail
*
* @return the thumbnail height
*/
public final long getThumbPixHeightLong() {
return uint32ToLong(mThumbPixHeight);
}
/**
* Returns the width of the MTP object in pixels
* Will be zero for non-image objects
@@ -146,9 +191,20 @@ public final class MtpObjectInfo {
* @return the image width
*/
public final int getImagePixWidth() {
Preconditions.checkState(mImagePixWidth >= 0);
return mImagePixWidth;
}
/**
* Returns the width of the MTP object in pixels
* Will be zero for non-image objects
*
* @return the image width
*/
public final long getImagePixWidthLong() {
return uint32ToLong(mImagePixWidth);
}
/**
* Returns the height of the MTP object in pixels
* Will be zero for non-image objects
@@ -156,9 +212,20 @@ public final class MtpObjectInfo {
* @return the image height
*/
public final int getImagePixHeight() {
Preconditions.checkState(mImagePixHeight >= 0);
return mImagePixHeight;
}
/**
* Returns the height of the MTP object in pixels
* Will be zero for non-image objects
*
* @return the image height
*/
public final long getImagePixHeightLong() {
return uint32ToLong(mImagePixHeight);
}
/**
* Returns the depth of the MTP object in bits per pixel
* Will be zero for non-image objects
@@ -166,9 +233,20 @@ public final class MtpObjectInfo {
* @return the image depth
*/
public final int getImagePixDepth() {
Preconditions.checkState(mImagePixDepth >= 0);
return mImagePixDepth;
}
/**
* Returns the depth of the MTP object in bits per pixel
* Will be zero for non-image objects
*
* @return the image depth
*/
public final long getImagePixDepthLong() {
return uint32ToLong(mImagePixDepth);
}
/**
* Returns the object handle for the object's parent
* Will be zero for the root directory of a storage unit
@@ -203,7 +281,7 @@ public final class MtpObjectInfo {
return mAssociationDesc;
}
/**
/**
* Returns the sequence number for the MTP object
* This field is typically not used for MTP devices,
* but is sometimes used to define a sequence of photos
@@ -212,9 +290,22 @@ public final class MtpObjectInfo {
* @return the object's sequence number
*/
public final int getSequenceNumber() {
Preconditions.checkState(mSequenceNumber >= 0);
return mSequenceNumber;
}
/**
* Returns the sequence number for the MTP object
* This field is typically not used for MTP devices,
* but is sometimes used to define a sequence of photos
* on PTP cameras.
*
* @return the object's sequence number
*/
public final long getSequenceNumberLong() {
return uint32ToLong(mSequenceNumber);
}
/**
* Returns the name of the MTP object
*
@@ -309,8 +400,8 @@ public final class MtpObjectInfo {
return this;
}
public Builder setCompressedSize(int value) {
mObjectInfo.mCompressedSize = value;
public Builder setCompressedSize(long value) {
mObjectInfo.mCompressedSize = longToUint32(value, "value");
return this;
}
@@ -329,18 +420,18 @@ public final class MtpObjectInfo {
return this;
}
public Builder setImagePixDepth(int value) {
mObjectInfo.mImagePixDepth = value;
public Builder setImagePixDepth(long value) {
mObjectInfo.mImagePixDepth = longToUint32(value, "value");
return this;
}
public Builder setImagePixHeight(int value) {
mObjectInfo.mImagePixHeight = value;
public Builder setImagePixHeight(long value) {
mObjectInfo.mImagePixHeight = longToUint32(value, "value");
return this;
}
public Builder setImagePixWidth(int value) {
mObjectInfo.mImagePixWidth = value;
public Builder setImagePixWidth(long value) {
mObjectInfo.mImagePixWidth = longToUint32(value, "value");
return this;
}
@@ -364,8 +455,8 @@ public final class MtpObjectInfo {
return this;
}
public Builder setSequenceNumber(int value) {
mObjectInfo.mSequenceNumber = value;
public Builder setSequenceNumber(long value) {
mObjectInfo.mSequenceNumber = longToUint32(value, "value");
return this;
}
@@ -374,8 +465,8 @@ public final class MtpObjectInfo {
return this;
}
public Builder setThumbCompressedSize(int value) {
mObjectInfo.mThumbCompressedSize = value;
public Builder setThumbCompressedSize(long value) {
mObjectInfo.mThumbCompressedSize = longToUint32(value, "value");
return this;
}
@@ -384,13 +475,13 @@ public final class MtpObjectInfo {
return this;
}
public Builder setThumbPixHeight(int value) {
mObjectInfo.mThumbPixHeight = value;
public Builder setThumbPixHeight(long value) {
mObjectInfo.mThumbPixHeight = longToUint32(value, "value");
return this;
}
public Builder setThumbPixWidth(int value) {
mObjectInfo.mThumbPixWidth = value;
public Builder setThumbPixWidth(long value) {
mObjectInfo.mThumbPixWidth = longToUint32(value, "value");
return this;
}
@@ -407,4 +498,13 @@ public final class MtpObjectInfo {
return result;
}
}
private static long uint32ToLong(int value) {
return value < 0 ? 0x100000000L + value : value;
}
private static int longToUint32(long value, String valueName) {
Preconditions.checkArgumentInRange(value, 0, 0xffffffffL, valueName);
return (int) value;
}
}

View File

@@ -26,6 +26,7 @@
#include <fcntl.h>
#include <memory>
#include <string>
#include "jni.h"
#include "JNIHelp.h"
@@ -370,9 +371,26 @@ android_mtp_MtpDevice_get_object_info(JNIEnv *env, jobject thiz, jint objectID)
return info;
}
bool check_uint32_arg(JNIEnv *env, const char* name, jlong value, uint32_t* out) {
if (value < 0 || 0xffffffff < value) {
jniThrowException(
env,
"java/lang/IllegalArgumentException",
(std::string("argument must be a 32-bit unsigned integer: ") + name).c_str());
return false;
}
*out = static_cast<uint32_t>(value);
return true;
}
static jbyteArray
android_mtp_MtpDevice_get_object(JNIEnv *env, jobject thiz, jint objectID, jint objectSize)
android_mtp_MtpDevice_get_object(JNIEnv *env, jobject thiz, jint objectID, jlong objectSizeLong)
{
uint32_t objectSize;
if (!check_uint32_arg(env, "objectSize", objectSizeLong, &objectSize)) {
return nullptr;
}
MtpDevice* device = get_device_from_object(env, thiz);
if (!device) {
return nullptr;
@@ -396,8 +414,8 @@ static jlong
android_mtp_MtpDevice_get_partial_object(JNIEnv *env,
jobject thiz,
jint objectID,
jlong offset,
jlong size,
jlong offsetLong,
jlong sizeLong,
jbyteArray array)
{
if (!array) {
@@ -405,19 +423,10 @@ android_mtp_MtpDevice_get_partial_object(JNIEnv *env,
return -1;
}
if (offset < 0 || 0xffffffffL < offset) {
jniThrowException(
env,
"java/lang/IllegalArgumentException",
"Offset argument must be a 32-bit unsigned integer.");
return -1;
}
if (size < 0 || 0xffffffffL < size) {
jniThrowException(
env,
"java/lang/IllegalArgumentException",
"Size argument must be a 32-bit unsigned integer.");
uint32_t offset;
uint32_t size;
if (!check_uint32_arg(env, "offset", offsetLong, &offset) ||
!check_uint32_arg(env, "size", sizeLong, &size)) {
return -1;
}
@@ -467,22 +476,22 @@ android_mtp_MtpDevice_delete_object(JNIEnv *env, jobject thiz, jint object_id)
}
}
static jlong
static jint
android_mtp_MtpDevice_get_parent(JNIEnv *env, jobject thiz, jint object_id)
{
MtpDevice* device = get_device_from_object(env, thiz);
if (device)
return (jlong)device->getParent(object_id);
return static_cast<jint>(device->getParent(object_id));
else
return -1;
}
static jlong
static jint
android_mtp_MtpDevice_get_storage_id(JNIEnv *env, jobject thiz, jint object_id)
{
MtpDevice* device = get_device_from_object(env, thiz);
if (device)
return (jlong)device->getStorageID(object_id);
return static_cast<jint>(device->getStorageID(object_id));
else
return -1;
}
@@ -516,8 +525,13 @@ android_mtp_MtpDevice_import_file_to_fd(JNIEnv *env, jobject thiz, jint object_i
}
static jboolean
android_mtp_MtpDevice_send_object(JNIEnv *env, jobject thiz, jint object_id, jint size, jint fd)
android_mtp_MtpDevice_send_object(
JNIEnv *env, jobject thiz, jint object_id, jlong sizeLong, jint fd)
{
uint32_t size;
if (!check_uint32_arg(env, "size", sizeLong, &size))
return JNI_FALSE;
MtpDevice* device = get_device_from_object(env, thiz);
if (!device)
return JNI_FALSE;
@@ -647,16 +661,16 @@ static const JNINativeMethod gMethods[] = {
(void *)android_mtp_MtpDevice_get_object_handles},
{"native_get_object_info", "(I)Landroid/mtp/MtpObjectInfo;",
(void *)android_mtp_MtpDevice_get_object_info},
{"native_get_object", "(II)[B",(void *)android_mtp_MtpDevice_get_object},
{"native_get_object", "(IJ)[B",(void *)android_mtp_MtpDevice_get_object},
{"native_get_partial_object", "(IJJ[B)J", (void *)android_mtp_MtpDevice_get_partial_object},
{"native_get_thumbnail", "(I)[B",(void *)android_mtp_MtpDevice_get_thumbnail},
{"native_delete_object", "(I)Z", (void *)android_mtp_MtpDevice_delete_object},
{"native_get_parent", "(I)J", (void *)android_mtp_MtpDevice_get_parent},
{"native_get_storage_id", "(I)J", (void *)android_mtp_MtpDevice_get_storage_id},
{"native_get_parent", "(I)I", (void *)android_mtp_MtpDevice_get_parent},
{"native_get_storage_id", "(I)I", (void *)android_mtp_MtpDevice_get_storage_id},
{"native_import_file", "(ILjava/lang/String;)Z",
(void *)android_mtp_MtpDevice_import_file},
{"native_import_file", "(II)Z",(void *)android_mtp_MtpDevice_import_file_to_fd},
{"native_send_object", "(III)Z",(void *)android_mtp_MtpDevice_send_object},
{"native_send_object", "(IJI)Z",(void *)android_mtp_MtpDevice_send_object},
{"native_send_object_info", "(Landroid/mtp/MtpObjectInfo;)Landroid/mtp/MtpObjectInfo;",
(void *)android_mtp_MtpDevice_send_object_info},
{"native_submit_event_request", "()I", (void *)android_mtp_MtpDevice_submit_event_request},