FileDocCategorySizeDatePackage
MtpDevice.javaAPI DocAndroid 5.1 API8897Thu Mar 12 22:22:30 GMT 2015android.mtp

MtpDevice

public final class MtpDevice extends Object
This class represents an MTP or PTP device connected on the USB host bus. An application can instantiate an object of this type, by referencing an attached {@link android.hardware.usb.UsbDevice} and then use methods in this class to get information about the device and objects stored on it, as well as open the connection and transfer data.

Fields Summary
private static final String
TAG
private final android.hardware.usb.UsbDevice
mDevice
private long
mNativeContext
Constructors Summary
public MtpDevice(android.hardware.usb.UsbDevice device)
MtpClient constructor

param
device the {@link android.hardware.usb.UsbDevice} for the MTP or PTP device


     
        System.loadLibrary("media_jni");
    
        mDevice = device;
    
Methods Summary
public voidclose()
Closes all resources related to the MtpDevice object. After this is called, the object can not be used until {@link #open} is called again with a new {@link android.hardware.usb.UsbDeviceConnection}.

        native_close();
    
public booleandeleteObject(int objectHandle)
Deletes an object on the device. This call may block, since deleting a directory containing many files may take a long time on some devices.

param
objectHandle handle of the object to delete
return
true if the deletion succeeds

        return native_delete_object(objectHandle);
    
protected voidfinalize()

        try {
            native_close();
        } finally {
            super.finalize();
        }
    
public intgetDeviceId()
Returns the USB ID of the USB device. This returns the same value as {@link android.hardware.usb.UsbDevice#getDeviceId} for the device's {@link android.hardware.usb.UsbDevice}

return
the device ID

        return mDevice.getDeviceId();
    
public MtpDeviceInfogetDeviceInfo()
Returns the {@link MtpDeviceInfo} for this device

return
the device info

        return native_get_device_info();
    
public java.lang.StringgetDeviceName()
Returns the name of the USB device This returns the same value as {@link android.hardware.usb.UsbDevice#getDeviceName} for the device's {@link android.hardware.usb.UsbDevice}

return
the device name

        return mDevice.getDeviceName();
    
public byte[]getObject(int objectHandle, int objectSize)
Returns the data for an object as a byte array. This call may block for an arbitrary amount of time depending on the size of the data and speed of the devices.

param
objectHandle handle of the object to read
param
objectSize the size of the object (this should match {@link MtpObjectInfo#getCompressedSize}
return
the object's data, or null if reading fails

        return native_get_object(objectHandle, objectSize);
    
public int[]getObjectHandles(int storageId, int format, int objectHandle)
Returns the list of object handles for all objects on the given storage unit, with the given format and parent. Information about each object can be accessed via {@link #getObjectInfo}.

param
storageId the storage unit to query
param
format the format of the object to return, or zero for all formats
param
objectHandle the parent object to query, or zero for the storage root
return
the object handles

        return native_get_object_handles(storageId, format, objectHandle);
    
public MtpObjectInfogetObjectInfo(int objectHandle)
Retrieves the {@link MtpObjectInfo} for an object.

param
objectHandle the handle of the object
return
the MtpObjectInfo

        return native_get_object_info(objectHandle);
    
public longgetParent(int objectHandle)
Retrieves the object handle for the parent of an object on the device.

param
objectHandle handle of the object to query
return
the parent's handle, or zero if it is in the root of the storage

        return native_get_parent(objectHandle);
    
public longgetStorageId(int objectHandle)
Retrieves the ID of the storage unit containing the given object on the device.

param
objectHandle handle of the object to query
return
the object's storage unit ID

        return native_get_storage_id(objectHandle);
    
public int[]getStorageIds()
Returns the list of IDs for all storage units on this device Information about each storage unit can be accessed via {@link #getStorageInfo}.

return
the list of storage IDs

        return native_get_storage_ids();
    
public MtpStorageInfogetStorageInfo(int storageId)
Retrieves the {@link MtpStorageInfo} for a storage unit.

param
storageId the ID of the storage unit
return
the MtpStorageInfo

        return native_get_storage_info(storageId);
    
public byte[]getThumbnail(int objectHandle)
Returns the thumbnail data for an object as a byte array. The size and format of the thumbnail data can be determined via {@link MtpObjectInfo#getThumbCompressedSize} and {@link MtpObjectInfo#getThumbFormat}. For typical devices the format is JPEG.

param
objectHandle handle of the object to read
return
the object's thumbnail, or null if reading fails

        return native_get_thumbnail(objectHandle);
    
public booleanimportFile(int objectHandle, java.lang.String destPath)
Copies the data for an object to a file in external storage. This call may block for an arbitrary amount of time depending on the size of the data and speed of the devices.

param
objectHandle handle of the object to read
param
destPath path to destination for the file transfer. This path should be in the external storage as defined by {@link android.os.Environment#getExternalStorageDirectory}
return
true if the file transfer succeeds

        return native_import_file(objectHandle, destPath);
    
private native voidnative_close()

private native booleannative_delete_object(int objectHandle)

private native MtpDeviceInfonative_get_device_info()

private native byte[]native_get_object(int objectHandle, int objectSize)

private native int[]native_get_object_handles(int storageId, int format, int objectHandle)

private native MtpObjectInfonative_get_object_info(int objectHandle)

private native longnative_get_parent(int objectHandle)

private native longnative_get_storage_id(int objectHandle)

private native int[]native_get_storage_ids()

private native MtpStorageInfonative_get_storage_info(int storageId)

private native byte[]native_get_thumbnail(int objectHandle)

private native booleannative_import_file(int objectHandle, java.lang.String destPath)

private native booleannative_open(java.lang.String deviceName, int fd)

public booleanopen(android.hardware.usb.UsbDeviceConnection connection)
Opens the MTP device. Once the device is open it takes ownership of the {@link android.hardware.usb.UsbDeviceConnection}. The connection will be closed when you call {@link #close()} The connection will also be closed if this method fails.

param
connection an open {@link android.hardware.usb.UsbDeviceConnection} for the device
return
true if the device was successfully opened.

        boolean result = native_open(mDevice.getDeviceName(), connection.getFileDescriptor());
        if (!result) {
            connection.close();
        }
        return result;
    
public java.lang.StringtoString()

        return mDevice.getDeviceName();