Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5367ab6a authored by Mike Lockwood's avatar Mike Lockwood
Browse files

MTP: Move all MTP protocol constants for Java to a central location.



Change-Id: I770d8727f84d25f0781fc23eedd9e9ac9ded1992
Signed-off-by: default avatarMike Lockwood <lockwood@android.com>
parent daeeddc5
Loading
Loading
Loading
Loading
+0 −108
Original line number Diff line number Diff line
@@ -233,113 +233,5 @@ public final class Mtp
         * <P>Type: TEXT</P>
         */
        public static final String KEYWORDS = "keywords";

        /**
         * Contants for {@link #FORMAT} and {@link #THUMB_FORMAT}
         */
        public static final int FORMAT_UNDEFINED = 0x3000;
        public static final int FORMAT_ASSOCIATION = 0x3001;
        public static final int FORMAT_SCRIPT = 0x3002;
        public static final int FORMAT_EXECUTABLE = 0x3003;
        public static final int FORMAT_TEXT = 0x3004;
        public static final int FORMAT_HTML = 0x3005;
        public static final int FORMAT_DPOF = 0x3006;
        public static final int FORMAT_AIFF = 0x3007;
        public static final int FORMAT_WAV = 0x3008;
        public static final int FORMAT_MP3 = 0x3009;
        public static final int FORMAT_AVI = 0x300A;
        public static final int FORMAT_MPEG = 0x300B;
        public static final int FORMAT_ASF = 0x300C;
        public static final int FORMAT_DEFINED = 0x3800;
        public static final int FORMAT_EXIF_JPEG = 0x3801;
        public static final int FORMAT_TIFF_EP = 0x3802;
        public static final int FORMAT_FLASHPIX = 0x3803;
        public static final int FORMAT_BMP = 0x3804;
        public static final int FORMAT_CIFF = 0x3805;
        public static final int FORMAT_GIF = 0x3807;
        public static final int FORMAT_JFIF = 0x3808;
        public static final int FORMAT_CD = 0x3809;
        public static final int FORMAT_PICT = 0x380A;
        public static final int FORMAT_PNG = 0x380B;
        public static final int FORMAT_TIFF = 0x380D;
        public static final int FORMAT_TIFF_IT = 0x380E;
        public static final int FORMAT_JP2 = 0x380F;
        public static final int FORMAT_JPX = 0x3810;
        public static final int FORMAT_UNDEFINED_FIRMWARE = 0xB802;
        public static final int FORMAT_WINDOWS_IMAGE_FORMAT = 0xB881;
        public static final int FORMAT_UNDEFINED_AUDIO = 0xB900;
        public static final int FORMAT_WMA = 0xB901;
        public static final int FORMAT_OGG = 0xB902;
        public static final int FORMAT_AAC = 0xB903;
        public static final int FORMAT_AUDIBLE = 0xB904;
        public static final int FORMAT_FLAC = 0xB906;
        public static final int FORMAT_UNDEFINED_VIDEO = 0xB980;
        public static final int FORMAT_WMV = 0xB981;
        public static final int FORMAT_MP4_CONTAINER = 0xB982;
        public static final int FORMAT_MP2 = 0xB983;
        public static final int FORMAT_3GP_CONTAINER = 0xB984;
        public static final int FORMAT_UNDEFINED_COLLECTION = 0xBA00;
        public static final int FORMAT_ABSTRACT_MULTIMEDIA_ALBUM = 0xBA01;
        public static final int FORMAT_ABSTRACT_IMAGE_ALBUM = 0xBA02;
        public static final int FORMAT_ABSTRACT_AUDIO_ALBUM = 0xBA03;
        public static final int FORMAT_ABSTRACT_VIDEO_ALBUM = 0xBA04;
        public static final int FORMAT_ABSTRACT_AV_PLAYLIST = 0xBA05;
        public static final int FORMAT_ABSTRACT_CONTACT_GROUP = 0xBA06;
        public static final int FORMAT_ABSTRACT_MESSAGE_FOLDER = 0xBA07;
        public static final int FORMAT_ABSTRACT_CHAPTERED_PRODUCTION = 0xBA08;
        public static final int FORMAT_ABSTRACT_AUDIO_PLAYLIST = 0xBA09;
        public static final int FORMAT_ABSTRACT_VIDEO_PLAYLIST = 0xBA0A;
        public static final int FORMAT_ABSTRACT_MEDIACAST = 0xBA0B;
        public static final int FORMAT_WPL_PLAYLIST = 0xBA10;
        public static final int FORMAT_M3U_PLAYLIST = 0xBA11;
        public static final int FORMAT_MPL_PLAYLIST = 0xBA12;
        public static final int FORMAT_ASX_PLAYLIST = 0xBA13;
        public static final int FORMAT_PLS_PLAYLIST = 0xBA14;
        public static final int FORMAT_UNDEFINED_DOCUMENT = 0xBA80;
        public static final int FORMAT_ABSTRACT_DOCUMENT = 0xBA81;
        public static final int FORMAT_XML_DOCUMENT = 0xBA82;
        public static final int FORMAT_MS_WORD_DOCUMENT = 0xBA83;
        public static final int FORMAT_MHT_COMPILED_HTML_DOCUMENT = 0xBA84;
        public static final int FORMAT_MS_EXCEL_SPREADSHEET = 0xBA85;
        public static final int FORMAT_MS_POWERPOINT_PRESENTATION = 0xBA86;
        public static final int FORMAT_UNDEFINED_MESSAGE = 0xBB00;
        public static final int FORMAT_ABSTRACT_MESSSAGE = 0xBB01;
        public static final int FORMAT_UNDEFINED_CONTACT = 0xBB80;
        public static final int FORMAT_ABSTRACT_CONTACT = 0xBB81;
        public static final int FORMAT_VCARD_2 = 0xBB82;

        // Object properties we support
        public static final int PROPERTY_STORAGE_ID = 0xDC01;
        public static final int PROPERTY_OBJECT_FORMAT = 0xDC02;
        public static final int PROPERTY_PROTECTION_STATUS = 0xDC03;
        public static final int PROPERTY_OBJECT_SIZE = 0xDC04;
        public static final int PROPERTY_OBJECT_FILE_NAME = 0xDC07;
        public static final int PROPERTY_DATE_MODIFIED = 0xDC09;
        public static final int PROPERTY_PARENT_OBJECT = 0xDC0B;
        public static final int PROPERTY_PERSISTENT_UID = 0xDC41;

        /**
         * Object is not protected. It may be modified and deleted, and its properties
         * may be modified.
         */
        public static final int PROTECTION_STATUS_NONE = 0;

        /**
         * Object can not be modified or deleted and its properties can not be modified.
         */
        public static final int PROTECTION_STATUS_READ_ONLY = 0x8001;

        /**
         * Object can not be modified or deleted but its properties are modifiable.
         */
        public static final int PROTECTION_STATUS_READ_ONLY_DATA = 0x8002;

        /**
         * Object's contents can not be transfered from the device, but the object
         * may be moved or deleted and its properties may be modified.
         */
        public static final int PROTECTION_STATUS_NON_TRANSFERABLE_DATA = 0x8003;

        public static final int ASSOCIATION_TYPE_GENERIC_FOLDER = 0x0001;
    }
}
+24 −25
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ import android.content.ContentValues;
import android.provider.MediaStore.Audio;
import android.provider.MediaStore.Images;
import android.provider.MediaStore.Video;
import android.provider.Mtp;
import android.media.DecoderCapabilities;
import android.media.DecoderCapabilities.VideoDecoder;
import android.media.DecoderCapabilities.AudioDecoder;
@@ -144,17 +143,17 @@ public class MediaFile {
    }

    static {
        addFileType("MP3", FILE_TYPE_MP3, "audio/mpeg", Mtp.Object.FORMAT_MP3);
        addFileType("M4A", FILE_TYPE_M4A, "audio/mp4", Mtp.Object.FORMAT_MPEG);
        addFileType("WAV", FILE_TYPE_WAV, "audio/x-wav", Mtp.Object.FORMAT_WAV);
        addFileType("MP3", FILE_TYPE_MP3, "audio/mpeg", MtpConstants.FORMAT_MP3);
        addFileType("M4A", FILE_TYPE_M4A, "audio/mp4", MtpConstants.FORMAT_MPEG);
        addFileType("WAV", FILE_TYPE_WAV, "audio/x-wav", MtpConstants.FORMAT_WAV);
        addFileType("AMR", FILE_TYPE_AMR, "audio/amr");
        addFileType("AWB", FILE_TYPE_AWB, "audio/amr-wb");
        if (isWMAEnabled()) {
            addFileType("WMA", FILE_TYPE_WMA, "audio/x-ms-wma", Mtp.Object.FORMAT_WMA);
            addFileType("WMA", FILE_TYPE_WMA, "audio/x-ms-wma", MtpConstants.FORMAT_WMA);
        }
        addFileType("OGG", FILE_TYPE_OGG, "application/ogg", Mtp.Object.FORMAT_OGG);
        addFileType("OGA", FILE_TYPE_OGG, "application/ogg", Mtp.Object.FORMAT_OGG);
        addFileType("AAC", FILE_TYPE_AAC, "audio/aac", Mtp.Object.FORMAT_AAC);
        addFileType("OGG", FILE_TYPE_OGG, "application/ogg", MtpConstants.FORMAT_OGG);
        addFileType("OGA", FILE_TYPE_OGG, "application/ogg", MtpConstants.FORMAT_OGG);
        addFileType("AAC", FILE_TYPE_AAC, "audio/aac", MtpConstants.FORMAT_AAC);
        addFileType("MKA", FILE_TYPE_MKA, "audio/x-matroska");
 
        addFileType("MID", FILE_TYPE_MID, "audio/midi");
@@ -166,32 +165,32 @@ public class MediaFile {
        addFileType("RTX", FILE_TYPE_MID, "audio/midi");
        addFileType("OTA", FILE_TYPE_MID, "audio/midi");
        
        addFileType("MPEG", FILE_TYPE_MP4, "video/mpeg", Mtp.Object.FORMAT_MPEG);
        addFileType("MP4", FILE_TYPE_MP4, "video/mp4", Mtp.Object.FORMAT_MPEG);
        addFileType("M4V", FILE_TYPE_M4V, "video/mp4", Mtp.Object.FORMAT_MPEG);
        addFileType("3GP", FILE_TYPE_3GPP, "video/3gpp",  Mtp.Object.FORMAT_3GP_CONTAINER);
        addFileType("3GPP", FILE_TYPE_3GPP, "video/3gpp", Mtp.Object.FORMAT_3GP_CONTAINER);
        addFileType("3G2", FILE_TYPE_3GPP2, "video/3gpp2", Mtp.Object.FORMAT_3GP_CONTAINER);
        addFileType("3GPP2", FILE_TYPE_3GPP2, "video/3gpp2", Mtp.Object.FORMAT_3GP_CONTAINER);
        addFileType("MPEG", FILE_TYPE_MP4, "video/mpeg", MtpConstants.FORMAT_MPEG);
        addFileType("MP4", FILE_TYPE_MP4, "video/mp4", MtpConstants.FORMAT_MPEG);
        addFileType("M4V", FILE_TYPE_M4V, "video/mp4", MtpConstants.FORMAT_MPEG);
        addFileType("3GP", FILE_TYPE_3GPP, "video/3gpp",  MtpConstants.FORMAT_3GP_CONTAINER);
        addFileType("3GPP", FILE_TYPE_3GPP, "video/3gpp", MtpConstants.FORMAT_3GP_CONTAINER);
        addFileType("3G2", FILE_TYPE_3GPP2, "video/3gpp2", MtpConstants.FORMAT_3GP_CONTAINER);
        addFileType("3GPP2", FILE_TYPE_3GPP2, "video/3gpp2", MtpConstants.FORMAT_3GP_CONTAINER);
        addFileType("MKV", FILE_TYPE_MKV, "video/x-matroska");
        addFileType("WEBM", FILE_TYPE_MKV, "video/x-matroska");
        addFileType("TS", FILE_TYPE_MP2TS, "video/mp2ts");

        if (isWMVEnabled()) {
            addFileType("WMV", FILE_TYPE_WMV, "video/x-ms-wmv", Mtp.Object.FORMAT_WMV);
            addFileType("WMV", FILE_TYPE_WMV, "video/x-ms-wmv", MtpConstants.FORMAT_WMV);
            addFileType("ASF", FILE_TYPE_ASF, "video/x-ms-asf");
        }

        addFileType("JPG", FILE_TYPE_JPEG, "image/jpeg", Mtp.Object.FORMAT_EXIF_JPEG);
        addFileType("JPEG", FILE_TYPE_JPEG, "image/jpeg", Mtp.Object.FORMAT_EXIF_JPEG);
        addFileType("GIF", FILE_TYPE_GIF, "image/gif", Mtp.Object.FORMAT_GIF);
        addFileType("PNG", FILE_TYPE_PNG, "image/png", Mtp.Object.FORMAT_PNG);
        addFileType("BMP", FILE_TYPE_BMP, "image/x-ms-bmp", Mtp.Object.FORMAT_BMP);
        addFileType("JPG", FILE_TYPE_JPEG, "image/jpeg", MtpConstants.FORMAT_EXIF_JPEG);
        addFileType("JPEG", FILE_TYPE_JPEG, "image/jpeg", MtpConstants.FORMAT_EXIF_JPEG);
        addFileType("GIF", FILE_TYPE_GIF, "image/gif", MtpConstants.FORMAT_GIF);
        addFileType("PNG", FILE_TYPE_PNG, "image/png", MtpConstants.FORMAT_PNG);
        addFileType("BMP", FILE_TYPE_BMP, "image/x-ms-bmp", MtpConstants.FORMAT_BMP);
        addFileType("WBMP", FILE_TYPE_WBMP, "image/vnd.wap.wbmp");
 
        addFileType("M3U", FILE_TYPE_M3U, "audio/x-mpegurl", Mtp.Object.FORMAT_M3U_PLAYLIST);
        addFileType("PLS", FILE_TYPE_PLS, "audio/x-scpls", Mtp.Object.FORMAT_PLS_PLAYLIST);
        addFileType("WPL", FILE_TYPE_WPL, "application/vnd.ms-wpl", Mtp.Object.FORMAT_WPL_PLAYLIST);
        addFileType("M3U", FILE_TYPE_M3U, "audio/x-mpegurl", MtpConstants.FORMAT_M3U_PLAYLIST);
        addFileType("PLS", FILE_TYPE_PLS, "audio/x-scpls", MtpConstants.FORMAT_PLS_PLAYLIST);
        addFileType("WPL", FILE_TYPE_WPL, "application/vnd.ms-wpl", MtpConstants.FORMAT_WPL_PLAYLIST);

        // compute file extensions list for native Media Scanner
        StringBuilder builder = new StringBuilder();
@@ -255,7 +254,7 @@ public class MediaFile {
                return value.intValue();
            }
        }
        return Mtp.Object.FORMAT_UNDEFINED;
        return MtpConstants.FORMAT_UNDEFINED;
    }

    public static String getMimeTypeForFormatCode(int formatCode) {
+382 −0

File added.

Preview size limit exceeded, changes collapsed.

+49 −56
Original line number Diff line number Diff line
@@ -25,7 +25,6 @@ import android.os.RemoteException;
import android.provider.MediaStore.Audio;
import android.provider.MediaStore.MediaColumns;
import android.provider.MediaStore.MtpObjects;
import android.provider.Mtp;
import android.util.Log;

/**
@@ -66,12 +65,6 @@ public class MtpDatabase {

    private final MediaScanner mMediaScanner;

    // MTP response codes
    private static final int MTP_RESPONSE_OK = 0x2001;
    private static final int MTP_RESPONSE_GENERAL_ERROR = 0x2002;
    private static final int MTP_RESPONSE_INVALID_OBJECT_HANDLE = 0x2009;
    private static final int MTP_RESPONSE_OBJECT_PROP_NOT_SUPPORTED = 0xA80A;

    static {
        System.loadLibrary("media_jni");
    }
@@ -121,7 +114,7 @@ public class MtpDatabase {
        if (succeeded) {
            // handle abstract playlists separately
            // they do not exist in the file system so don't use the media scanner here
            if (format == Mtp.Object.FORMAT_ABSTRACT_AV_PLAYLIST) {
            if (format == MtpConstants.FORMAT_ABSTRACT_AV_PLAYLIST) {
                // Strip Windows Media Player file extension
                if (path.endsWith(".pla")) {
                    path = path.substring(0, path.length() - 4);
@@ -218,25 +211,25 @@ public class MtpDatabase {

    private int[] getSupportedPlaybackFormats() {
        return new int[] {
            Mtp.Object.FORMAT_ASSOCIATION,
            Mtp.Object.FORMAT_MP3,
            Mtp.Object.FORMAT_MPEG,
            Mtp.Object.FORMAT_EXIF_JPEG,
            Mtp.Object.FORMAT_TIFF_EP,
            Mtp.Object.FORMAT_GIF,
            Mtp.Object.FORMAT_JFIF,
            Mtp.Object.FORMAT_PNG,
            Mtp.Object.FORMAT_TIFF,
            Mtp.Object.FORMAT_WMA,
            Mtp.Object.FORMAT_OGG,
            Mtp.Object.FORMAT_AAC,
            Mtp.Object.FORMAT_MP4_CONTAINER,
            Mtp.Object.FORMAT_MP2,
            Mtp.Object.FORMAT_3GP_CONTAINER,
            Mtp.Object.FORMAT_ABSTRACT_AV_PLAYLIST,
            Mtp.Object.FORMAT_WPL_PLAYLIST,
            Mtp.Object.FORMAT_M3U_PLAYLIST,
            Mtp.Object.FORMAT_PLS_PLAYLIST,
            MtpConstants.FORMAT_ASSOCIATION,
            MtpConstants.FORMAT_MP3,
            MtpConstants.FORMAT_MPEG,
            MtpConstants.FORMAT_EXIF_JPEG,
            MtpConstants.FORMAT_TIFF_EP,
            MtpConstants.FORMAT_GIF,
            MtpConstants.FORMAT_JFIF,
            MtpConstants.FORMAT_PNG,
            MtpConstants.FORMAT_TIFF,
            MtpConstants.FORMAT_WMA,
            MtpConstants.FORMAT_OGG,
            MtpConstants.FORMAT_AAC,
            MtpConstants.FORMAT_MP4_CONTAINER,
            MtpConstants.FORMAT_MP2,
            MtpConstants.FORMAT_3GP_CONTAINER,
            MtpConstants.FORMAT_ABSTRACT_AV_PLAYLIST,
            MtpConstants.FORMAT_WPL_PLAYLIST,
            MtpConstants.FORMAT_M3U_PLAYLIST,
            MtpConstants.FORMAT_PLS_PLAYLIST,
        };
    }

@@ -247,11 +240,11 @@ public class MtpDatabase {

    private int[] getSupportedObjectProperties(int handle) {
        return new int[] {
            Mtp.Object.PROPERTY_STORAGE_ID,
            Mtp.Object.PROPERTY_OBJECT_FORMAT,
            Mtp.Object.PROPERTY_OBJECT_SIZE,
            Mtp.Object.PROPERTY_OBJECT_FILE_NAME,
            Mtp.Object.PROPERTY_PARENT_OBJECT,
            MtpConstants.PROPERTY_STORAGE_ID,
            MtpConstants.PROPERTY_OBJECT_FORMAT,
            MtpConstants.PROPERTY_OBJECT_SIZE,
            MtpConstants.PROPERTY_OBJECT_FILE_NAME,
            MtpConstants.PROPERTY_PARENT_OBJECT,
        };
    }

@@ -267,38 +260,38 @@ public class MtpDatabase {
        boolean isString = false;

        switch (property) {
            case Mtp.Object.PROPERTY_STORAGE_ID:
            case MtpConstants.PROPERTY_STORAGE_ID:
                outIntValue[0] = mStorageID;
                return MTP_RESPONSE_OK;
            case Mtp.Object.PROPERTY_OBJECT_FORMAT:
                return MtpConstants.RESPONSE_OK;
            case MtpConstants.PROPERTY_OBJECT_FORMAT:
                column = MtpObjects.ObjectColumns.FORMAT;
                break;
            case Mtp.Object.PROPERTY_PROTECTION_STATUS:
            case MtpConstants.PROPERTY_PROTECTION_STATUS:
                // protection status is always 0
                outIntValue[0] = 0;
                return MTP_RESPONSE_OK;
            case Mtp.Object.PROPERTY_OBJECT_SIZE:
                return MtpConstants.RESPONSE_OK;
            case MtpConstants.PROPERTY_OBJECT_SIZE:
                column = MtpObjects.ObjectColumns.SIZE;
                break;
            case Mtp.Object.PROPERTY_OBJECT_FILE_NAME:
            case MtpConstants.PROPERTY_OBJECT_FILE_NAME:
                column = MtpObjects.ObjectColumns.DATA;
                isString = true;
                break;
            case Mtp.Object.PROPERTY_DATE_MODIFIED:
            case MtpConstants.PROPERTY_DATE_MODIFIED:
                column = MtpObjects.ObjectColumns.DATE_MODIFIED;
                break;
            case Mtp.Object.PROPERTY_PARENT_OBJECT:
            case MtpConstants.PROPERTY_PARENT_OBJECT:
                column = MtpObjects.ObjectColumns.PARENT;
                break;
            case Mtp.Object.PROPERTY_PERSISTENT_UID:
            case MtpConstants.PROPERTY_PERSISTENT_UID:
                // PUID is concatenation of storageID and object handle
                long puid = mStorageID;
                puid <<= 32;
                puid += handle;
                outIntValue[0] = puid;
                return MTP_RESPONSE_OK;
                return MtpConstants.RESPONSE_OK;
            default:
                return MTP_RESPONSE_OBJECT_PROP_NOT_SUPPORTED;
                return MtpConstants.RESPONSE_OBJECT_PROP_NOT_SUPPORTED;
        }

        Cursor c = null;
@@ -312,7 +305,7 @@ public class MtpDatabase {
                    String value = c.getString(1);
                    int start = 0;

                    if (property == Mtp.Object.PROPERTY_OBJECT_FILE_NAME) {
                    if (property == MtpConstants.PROPERTY_OBJECT_FILE_NAME) {
                        // extract name from full path
                        int lastSlash = value.lastIndexOf('/');
                        if (lastSlash >= 0) {
@@ -328,17 +321,17 @@ public class MtpDatabase {
                } else {
                    outIntValue[0] = c.getLong(1);
                }
                return MTP_RESPONSE_OK;
                return MtpConstants.RESPONSE_OK;
            }
        } catch (Exception e) {
            return MTP_RESPONSE_GENERAL_ERROR;
            return MtpConstants.RESPONSE_GENERAL_ERROR;
        } finally {
            if (c != null) {
                c.close();
            }
        }
        // query failed if we get here
        return MTP_RESPONSE_INVALID_OBJECT_HANDLE;
        return MtpConstants.RESPONSE_INVALID_OBJECT_HANDLE;
    }

    private boolean getObjectInfo(int handle, int[] outStorageFormatParent,
@@ -389,13 +382,13 @@ public class MtpDatabase {
                path.getChars(0, path.length(), outFilePath, 0);
                outFilePath[path.length()] = 0;
                outFileLength[0] = c.getLong(2);
                return MTP_RESPONSE_OK;
                return MtpConstants.RESPONSE_OK;
            } else {
                return MTP_RESPONSE_INVALID_OBJECT_HANDLE;
                return MtpConstants.RESPONSE_INVALID_OBJECT_HANDLE;
            }
        } catch (RemoteException e) {
            Log.e(TAG, "RemoteException in getObjectFilePath", e);
            return MTP_RESPONSE_GENERAL_ERROR;
            return MtpConstants.RESPONSE_GENERAL_ERROR;
        } finally {
            if (c != null) {
                c.close();
@@ -408,13 +401,13 @@ public class MtpDatabase {
        Uri uri = MtpObjects.getContentUri(mVolumeName, handle);
        try {
            if (mMediaProvider.delete(uri, null, null) == 1) {
                return MTP_RESPONSE_OK;
                return MtpConstants.RESPONSE_OK;
            } else {
                return MTP_RESPONSE_INVALID_OBJECT_HANDLE;
                return MtpConstants.RESPONSE_INVALID_OBJECT_HANDLE;
            }
        } catch (RemoteException e) {
            Log.e(TAG, "RemoteException in deleteFile", e);
            return MTP_RESPONSE_GENERAL_ERROR;
            return MtpConstants.RESPONSE_GENERAL_ERROR;
        }
    }

@@ -457,12 +450,12 @@ public class MtpDatabase {
        }
        try {
            if (count == mMediaProvider.bulkInsert(uri, valuesList)) {
                return MTP_RESPONSE_OK;
                return MtpConstants.RESPONSE_OK;
            }
        } catch (RemoteException e) {
            Log.e(TAG, "RemoteException in setObjectReferences", e);
        }
        return MTP_RESPONSE_GENERAL_ERROR;
        return MtpConstants.RESPONSE_GENERAL_ERROR;
    }

    // used by the JNI code
+2 −1
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.MtpConstants;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Mtp;
@@ -100,7 +101,7 @@ public class ObjectBrowser extends ListActivity {
            format = c.getLong(FORMAT_COLUMN);
            Log.d(TAG, "rowId: " + rowId + " name: " + name + " format: " + format);
        }
        if (format == Mtp.Object.FORMAT_JFIF) {
        if (format == MtpConstants.FORMAT_JFIF) {
            Intent intent = new Intent(this, ObjectViewer.class);
            intent.putExtra("device", mDeviceID);
            intent.putExtra("storage", mStorageID);