Loading api/current.txt +1 −1 Original line number Diff line number Diff line Loading @@ -18146,7 +18146,7 @@ package android.mtp { method public final int getThumbPixWidth(); } public class MtpObjectInfo.Builder { public static class MtpObjectInfo.Builder { ctor public MtpObjectInfo.Builder(); ctor public MtpObjectInfo.Builder(android.mtp.MtpObjectInfo); method public android.mtp.MtpObjectInfo build(); api/system-current.txt +1 −1 Original line number Diff line number Diff line Loading @@ -19659,7 +19659,7 @@ package android.mtp { method public final int getThumbPixWidth(); } public class MtpObjectInfo.Builder { public static class MtpObjectInfo.Builder { ctor public MtpObjectInfo.Builder(); ctor public MtpObjectInfo.Builder(android.mtp.MtpObjectInfo); method public android.mtp.MtpObjectInfo build(); media/java/android/mtp/MtpObjectInfo.java +1 −1 Original line number Diff line number Diff line Loading @@ -256,7 +256,7 @@ public final class MtpObjectInfo { /** * Builds a new object info instance. */ public class Builder { public static class Builder { private MtpObjectInfo mObjectInfo; public Builder() { Loading media/jni/android_mtp_MtpDevice.cpp +14 −8 Original line number Diff line number Diff line Loading @@ -430,12 +430,14 @@ static jobject android_mtp_MtpDevice_send_object_info(JNIEnv *env, jobject thiz, jobject info) { MtpDevice* device = get_device_from_object(env, thiz); if (!device) if (!device) { return JNI_FALSE; } // Updating existing objects is not supported. if (env->GetIntField(info, field_objectInfo_handle) != -1) if (env->GetIntField(info, field_objectInfo_handle) != -1) { return JNI_FALSE; } MtpObjectInfo* object_info = new MtpObjectInfo(-1); object_info->mStorageID = env->GetIntField(info, field_objectInfo_storageId); Loading @@ -456,17 +458,21 @@ android_mtp_MtpDevice_send_object_info(JNIEnv *env, jobject thiz, jobject info) object_info->mSequenceNumber = env->GetIntField(info, field_objectInfo_sequenceNumber); jstring name_jstring = (jstring) env->GetObjectField(info, field_objectInfo_name); if (name_jstring != NULL) { const char* name_string = env->GetStringUTFChars(name_jstring, NULL); object_info->mName = strdup(name_string); env->ReleaseStringUTFChars(name_jstring, name_string); } object_info->mDateCreated = env->GetLongField(info, field_objectInfo_dateCreated) / 1000LL; object_info->mDateModified = env->GetLongField(info, field_objectInfo_dateModified) / 1000LL; jstring keywords_jstring = (jstring) env->GetObjectField(info, field_objectInfo_keywords); if (keywords_jstring != NULL) { const char* keywords_string = env->GetStringUTFChars(keywords_jstring, NULL); object_info->mKeywords = strdup(keywords_string); env->ReleaseStringUTFChars(keywords_jstring, keywords_string); } int object_handle = device->sendObjectInfo(object_info); if (object_handle == -1) { Loading packages/MtpDocumentsProvider/src/com/android/mtp/MtpDocument.java +27 −8 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ class MtpDocument { private final Date mDateModified; private final int mSize; private final int mThumbSize; private final boolean mReadOnly; /** * Constructor for root document. Loading @@ -40,9 +41,10 @@ class MtpDocument { this(DUMMY_HANDLE_FOR_ROOT, 0x3001, // Directory. root.mDescription, null, // Unknown, null, // Unknown name. (int) Math.min(root.mMaxCapacity - root.mFreeSpace, Integer.MAX_VALUE), 0); 0, // Total size. true); // Writable. } MtpDocument(MtpObjectInfo objectInfo) { Loading @@ -51,7 +53,8 @@ class MtpDocument { objectInfo.getName(), objectInfo.getDateModified() != 0 ? new Date(objectInfo.getDateModified()) : null, objectInfo.getCompressedSize(), objectInfo.getThumbCompressedSize()); objectInfo.getThumbCompressedSize(), objectInfo.getProtectionStatus() != 0); } MtpDocument(int objectHandle, Loading @@ -59,13 +62,15 @@ class MtpDocument { String name, Date dateModified, int size, int thumbSize) { int thumbSize, boolean readOnly) { this.mObjectHandle = objectHandle; this.mFormat = format; this.mName = name; this.mDateModified = dateModified; this.mSize = size; this.mThumbSize = thumbSize; this.mReadOnly = readOnly; } void addToCursor(Identifier rootIdentifier, MatrixCursor.RowBuilder builder) { Loading @@ -82,7 +87,7 @@ class MtpDocument { builder.add(Document.COLUMN_DOCUMENT_ID, identifier.toDocumentId()); builder.add(Document.COLUMN_DISPLAY_NAME, mName); builder.add(Document.COLUMN_MIME_TYPE, getMimeType()); builder.add(Document.COLUMN_MIME_TYPE, formatTypeToMimeType(mFormat)); builder.add( Document.COLUMN_LAST_MODIFIED, mDateModified != null ? mDateModified.getTime() : null); Loading @@ -90,9 +95,9 @@ class MtpDocument { builder.add(Document.COLUMN_SIZE, mSize); } private String getMimeType() { static String formatTypeToMimeType(int format) { // TODO: Add complete list of mime types. switch (mFormat) { switch (format) { case 0x3001: return DocumentsContract.Document.MIME_TYPE_DIR; case 0x3009: Loading @@ -100,7 +105,21 @@ class MtpDocument { case 0x3801: return "image/jpeg"; default: return ""; return "application/octet-stream"; } } static int mimeTypeToFormatType(String mimeType) { // TODO: Add complete list of mime types. switch (mimeType.toLowerCase()) { case Document.MIME_TYPE_DIR: return 0x3001; case "audio/mp3": return 0x3009; case "image/jpeg": return 0x3801; default: return 0x3000; // Undefined object. } } } Loading
api/current.txt +1 −1 Original line number Diff line number Diff line Loading @@ -18146,7 +18146,7 @@ package android.mtp { method public final int getThumbPixWidth(); } public class MtpObjectInfo.Builder { public static class MtpObjectInfo.Builder { ctor public MtpObjectInfo.Builder(); ctor public MtpObjectInfo.Builder(android.mtp.MtpObjectInfo); method public android.mtp.MtpObjectInfo build();
api/system-current.txt +1 −1 Original line number Diff line number Diff line Loading @@ -19659,7 +19659,7 @@ package android.mtp { method public final int getThumbPixWidth(); } public class MtpObjectInfo.Builder { public static class MtpObjectInfo.Builder { ctor public MtpObjectInfo.Builder(); ctor public MtpObjectInfo.Builder(android.mtp.MtpObjectInfo); method public android.mtp.MtpObjectInfo build();
media/java/android/mtp/MtpObjectInfo.java +1 −1 Original line number Diff line number Diff line Loading @@ -256,7 +256,7 @@ public final class MtpObjectInfo { /** * Builds a new object info instance. */ public class Builder { public static class Builder { private MtpObjectInfo mObjectInfo; public Builder() { Loading
media/jni/android_mtp_MtpDevice.cpp +14 −8 Original line number Diff line number Diff line Loading @@ -430,12 +430,14 @@ static jobject android_mtp_MtpDevice_send_object_info(JNIEnv *env, jobject thiz, jobject info) { MtpDevice* device = get_device_from_object(env, thiz); if (!device) if (!device) { return JNI_FALSE; } // Updating existing objects is not supported. if (env->GetIntField(info, field_objectInfo_handle) != -1) if (env->GetIntField(info, field_objectInfo_handle) != -1) { return JNI_FALSE; } MtpObjectInfo* object_info = new MtpObjectInfo(-1); object_info->mStorageID = env->GetIntField(info, field_objectInfo_storageId); Loading @@ -456,17 +458,21 @@ android_mtp_MtpDevice_send_object_info(JNIEnv *env, jobject thiz, jobject info) object_info->mSequenceNumber = env->GetIntField(info, field_objectInfo_sequenceNumber); jstring name_jstring = (jstring) env->GetObjectField(info, field_objectInfo_name); if (name_jstring != NULL) { const char* name_string = env->GetStringUTFChars(name_jstring, NULL); object_info->mName = strdup(name_string); env->ReleaseStringUTFChars(name_jstring, name_string); } object_info->mDateCreated = env->GetLongField(info, field_objectInfo_dateCreated) / 1000LL; object_info->mDateModified = env->GetLongField(info, field_objectInfo_dateModified) / 1000LL; jstring keywords_jstring = (jstring) env->GetObjectField(info, field_objectInfo_keywords); if (keywords_jstring != NULL) { const char* keywords_string = env->GetStringUTFChars(keywords_jstring, NULL); object_info->mKeywords = strdup(keywords_string); env->ReleaseStringUTFChars(keywords_jstring, keywords_string); } int object_handle = device->sendObjectInfo(object_info); if (object_handle == -1) { Loading
packages/MtpDocumentsProvider/src/com/android/mtp/MtpDocument.java +27 −8 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ class MtpDocument { private final Date mDateModified; private final int mSize; private final int mThumbSize; private final boolean mReadOnly; /** * Constructor for root document. Loading @@ -40,9 +41,10 @@ class MtpDocument { this(DUMMY_HANDLE_FOR_ROOT, 0x3001, // Directory. root.mDescription, null, // Unknown, null, // Unknown name. (int) Math.min(root.mMaxCapacity - root.mFreeSpace, Integer.MAX_VALUE), 0); 0, // Total size. true); // Writable. } MtpDocument(MtpObjectInfo objectInfo) { Loading @@ -51,7 +53,8 @@ class MtpDocument { objectInfo.getName(), objectInfo.getDateModified() != 0 ? new Date(objectInfo.getDateModified()) : null, objectInfo.getCompressedSize(), objectInfo.getThumbCompressedSize()); objectInfo.getThumbCompressedSize(), objectInfo.getProtectionStatus() != 0); } MtpDocument(int objectHandle, Loading @@ -59,13 +62,15 @@ class MtpDocument { String name, Date dateModified, int size, int thumbSize) { int thumbSize, boolean readOnly) { this.mObjectHandle = objectHandle; this.mFormat = format; this.mName = name; this.mDateModified = dateModified; this.mSize = size; this.mThumbSize = thumbSize; this.mReadOnly = readOnly; } void addToCursor(Identifier rootIdentifier, MatrixCursor.RowBuilder builder) { Loading @@ -82,7 +87,7 @@ class MtpDocument { builder.add(Document.COLUMN_DOCUMENT_ID, identifier.toDocumentId()); builder.add(Document.COLUMN_DISPLAY_NAME, mName); builder.add(Document.COLUMN_MIME_TYPE, getMimeType()); builder.add(Document.COLUMN_MIME_TYPE, formatTypeToMimeType(mFormat)); builder.add( Document.COLUMN_LAST_MODIFIED, mDateModified != null ? mDateModified.getTime() : null); Loading @@ -90,9 +95,9 @@ class MtpDocument { builder.add(Document.COLUMN_SIZE, mSize); } private String getMimeType() { static String formatTypeToMimeType(int format) { // TODO: Add complete list of mime types. switch (mFormat) { switch (format) { case 0x3001: return DocumentsContract.Document.MIME_TYPE_DIR; case 0x3009: Loading @@ -100,7 +105,21 @@ class MtpDocument { case 0x3801: return "image/jpeg"; default: return ""; return "application/octet-stream"; } } static int mimeTypeToFormatType(String mimeType) { // TODO: Add complete list of mime types. switch (mimeType.toLowerCase()) { case Document.MIME_TYPE_DIR: return 0x3001; case "audio/mp3": return 0x3009; case "image/jpeg": return 0x3801; default: return 0x3000; // Undefined object. } } }