public final class MtpDevice
extends Object
java.lang.Object | |
↳ | android.mtp.MtpDevice |
该类表示连接在USB主机总线上的MTP或PTP设备。 应用程序可以通过引用附件UsbDevice
来实例化此类型的对象,然后使用此类中的方法获取有关设备和存储在其上的对象的信息,以及打开连接和传输数据。
Public constructors |
|
---|---|
MtpDevice(UsbDevice device) MtpClient构造函数 |
Public methods |
|
---|---|
void |
close() 关闭与MtpDevice对象相关的所有资源。 |
boolean |
deleteObject(int objectHandle) 删除设备上的对象。 |
int |
getDeviceId() 返回USB设备的USB ID。 |
MtpDeviceInfo |
getDeviceInfo() 返回此设备的 |
String |
getDeviceName() 返回USB设备的名称,这将返回相同的值 |
byte[] |
getObject(int objectHandle, int objectSize) 以字节数组形式返回对象的数据。 |
int[] |
getObjectHandles(int storageId, int format, int objectHandle) 返回给定存储单元上所有对象的对象句柄列表,给定格式和父级。 |
MtpObjectInfo |
getObjectInfo(int objectHandle) 检索对象的 |
long |
getParent(int objectHandle) 检索设备上对象的父对象句柄。 |
long |
getPartialObject(int objectHandle, long offset, long size, byte[] buffer) 获取指定范围内的对象字节并将其写入数组。 |
long |
getPartialObject64(int objectHandle, long offset, long size, byte[] buffer) 获取指定范围内的对象字节并将其写入数组。 |
long |
getStorageId(int objectHandle) 检索包含设备上给定对象的存储单元的ID。 |
int[] |
getStorageIds() 返回此设备上所有存储单元的ID列表可以通过 |
MtpStorageInfo |
getStorageInfo(int storageId) 检索存储单元的 |
byte[] |
getThumbnail(int objectHandle) 以字节数组的形式返回对象的缩略图数据。 |
boolean |
importFile(int objectHandle, String destPath) 将对象的数据复制到外部存储器中的文件。 |
boolean |
importFile(int objectHandle, ParcelFileDescriptor descriptor) 将对象的数据复制到文件描述符。 |
boolean |
open(UsbDeviceConnection connection) 打开MTP设备。 |
MtpEvent |
readEvent(CancellationSignal signal) 从设备读取事件。 |
boolean |
sendObject(int objectHandle, long size, ParcelFileDescriptor descriptor) 从文件描述符复制对象的数据。 |
MtpObjectInfo |
sendObjectInfo(MtpObjectInfo info) 上传新条目的对象元数据。 |
String |
toString() 返回对象的字符串表示形式。 |
Protected methods |
|
---|---|
void |
finalize() 当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
MtpDevice (UsbDevice device)
MtpClient构造函数
Parameters | |
---|---|
device |
UsbDevice : the UsbDevice for the MTP or PTP device |
void close ()
关闭与MtpDevice对象相关的所有资源。 在此之后,该对象不能使用,直到open(UsbDeviceConnection)
再次被调用一个新的UsbDeviceConnection
。
boolean deleteObject (int objectHandle)
删除设备上的对象。 此调用可能会阻止,因为删除包含多个文件的目录在某些设备上可能需要很长时间。
Parameters | |
---|---|
objectHandle |
int : handle of the object to delete |
Returns | |
---|---|
boolean |
true if the deletion succeeds |
int getDeviceId ()
返回USB设备的USB ID。 这将为设备UsbDevice
返回与getDeviceId()
相同的值
Returns | |
---|---|
int |
the device ID |
MtpDeviceInfo getDeviceInfo ()
返回此设备的 MtpDeviceInfo
Returns | |
---|---|
MtpDeviceInfo |
the device info |
String getDeviceName ()
返回USB设备的名称该设备的返回值与 getDeviceName()
返回值相同 UsbDevice
Returns | |
---|---|
String |
the device name |
byte[] getObject (int objectHandle, int objectSize)
以字节数组形式返回对象的数据。 根据数据大小和设备速度的不同,此调用可能会阻塞任意时间。
Parameters | |
---|---|
objectHandle |
int : handle of the object to read |
objectSize |
int : the size of the object (this should match getCompressedSize() ) |
Returns | |
---|---|
byte[] |
the object's data, or null if reading fails |
int[] getObjectHandles (int storageId, int format, int objectHandle)
返回给定存储单元上所有对象的对象句柄列表,给定格式和父级。 有关每个对象的信息可以通过getObjectInfo(int)
访问。
Parameters | |
---|---|
storageId |
int : the storage unit to query |
format |
int : the format of the object to return, or zero for all formats |
objectHandle |
int : the parent object to query, -1 for the storage root, or zero for all objects |
Returns | |
---|---|
int[] |
the object handles |
MtpObjectInfo getObjectInfo (int objectHandle)
检索对象的 MtpObjectInfo
。
Parameters | |
---|---|
objectHandle |
int : the handle of the object |
Returns | |
---|---|
MtpObjectInfo |
the MtpObjectInfo |
long getParent (int objectHandle)
检索设备上对象的父对象句柄。
Parameters | |
---|---|
objectHandle |
int : handle of the object to query |
Returns | |
---|---|
long |
the parent's handle, or zero if it is in the root of the storage |
long getPartialObject (int objectHandle, long offset, long size, byte[] buffer)
获取指定范围内的对象字节并将其写入数组。 根据数据大小和设备速度的不同,此调用可能会阻塞任意时间。
Parameters | |
---|---|
objectHandle |
int : handle of the object to read |
offset |
long : Start index of reading range. It must be a non-negative value at most 0xffffffff. |
size |
long : Size of reading range. It must be a non-negative value at most Integer.MAX_VALUE or 0xffffffff. If 0xffffffff is specified, the method obtains the full bytes of object. |
buffer |
byte : Array to write data. |
Returns | |
---|---|
long |
Size of bytes that are actually read. |
Throws | |
---|---|
IOException |
long getPartialObject64 (int objectHandle, long offset, long size, byte[] buffer)
获取指定范围内的对象字节并将其写入数组。 根据数据大小和设备速度的不同,此调用可能会阻塞任意时间。 这是Android支持的供应商扩展操作,它使我们能够传递无符号的64位偏移量。 通过使用getOperationsSupported()
检查MTP设备是否支持该操作。
Parameters | |
---|---|
objectHandle |
int : handle of the object to read |
offset |
long : Start index of reading range. It must be a non-negative value. |
size |
long : Size of reading range. It must be a non-negative value at most Integer.MAX_VALUE. |
buffer |
byte : Array to write data. |
Returns | |
---|---|
long |
Size of bytes that are actually read. |
Throws | |
---|---|
IOException |
long getStorageId (int objectHandle)
检索包含设备上给定对象的存储单元的ID。
Parameters | |
---|---|
objectHandle |
int : handle of the object to query |
Returns | |
---|---|
long |
the object's storage unit ID |
int[] getStorageIds ()
返回此设备上所有存储单元的ID列表可以通过 getStorageInfo(int)
访问有关每个存储单元的信息。
Returns | |
---|---|
int[] |
the list of storage IDs |
MtpStorageInfo getStorageInfo (int storageId)
检索存储单元的 MtpStorageInfo
。
Parameters | |
---|---|
storageId |
int : the ID of the storage unit |
Returns | |
---|---|
MtpStorageInfo |
the MtpStorageInfo |
byte[] getThumbnail (int objectHandle)
以字节数组的形式返回对象的缩略图数据。 缩略图数据的大小和格式可以通过getThumbCompressedSize()
和getThumbFormat()
确定。 对于典型的设备,格式是JPEG。
Parameters | |
---|---|
objectHandle |
int : handle of the object to read |
Returns | |
---|---|
byte[] |
the object's thumbnail, or null if reading fails |
boolean importFile (int objectHandle, String destPath)
将对象的数据复制到外部存储器中的文件。 根据数据大小和设备速度的不同,此调用可能会阻塞任意时间。
Parameters | |
---|---|
objectHandle |
int : handle of the object to read |
destPath |
String : path to destination for the file transfer. This path should be in the external storage as defined by getExternalStorageDirectory() |
Returns | |
---|---|
boolean |
true if the file transfer succeeds |
boolean importFile (int objectHandle, ParcelFileDescriptor descriptor)
将对象的数据复制到文件描述符。 根据数据大小和设备速度的不同,此调用可能会阻塞任意时间。 文件描述符在完成时未关闭,并且必须由调用者完成。
Parameters | |
---|---|
objectHandle |
int : handle of the object to read |
descriptor |
ParcelFileDescriptor : file descriptor to write the data to for the file transfer. |
Returns | |
---|---|
boolean |
true if the file transfer succeeds |
boolean open (UsbDeviceConnection connection)
打开MTP设备。 一旦设备打开,它将获得UsbDeviceConnection
所有权。 当您拨打close()
,连接将被关闭如果此方法失败,连接也将被关闭。
Parameters | |
---|---|
connection |
UsbDeviceConnection : an open UsbDeviceConnection for the device |
Returns | |
---|---|
boolean |
true if the device was successfully opened. |
MtpEvent readEvent (CancellationSignal signal)
从设备读取事件。 它阻塞当前线程直到它发生事件。 如果它被信号取消,则抛出OperationCanceledException。
Parameters | |
---|---|
signal |
CancellationSignal : signal for cancellation |
Returns | |
---|---|
MtpEvent |
obtained event |
Throws | |
---|---|
IOException |
boolean sendObject (int objectHandle, long size, ParcelFileDescriptor descriptor)
从文件描述符复制对象的数据。 根据数据大小和设备速度的不同,此调用可能会阻塞任意时间。 文件描述符在完成时未关闭,并且必须由调用者完成。
Parameters | |
---|---|
objectHandle |
int : handle of the target file |
size |
long : size of the file in bytes |
descriptor |
ParcelFileDescriptor : file descriptor to read the data from. |
Returns | |
---|---|
boolean |
true if the file transfer succeeds |
MtpObjectInfo sendObjectInfo (MtpObjectInfo info)
上传新条目的对象元数据。 该MtpObjectInfo
可以与创建MtpObjectInfo.Builder
类。 返回的MtpObjectInfo
已填入新的对象句柄字段。
Parameters | |
---|---|
info |
MtpObjectInfo : metadata of the entry |
Returns | |
---|---|
MtpObjectInfo |
object info of the created entry or null if the operation failed. |
String toString ()
返回对象的字符串表示形式。 通常, toString
方法会返回一个“文本表示”该对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。
类Object
的toString
方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @
”和对象的哈希代码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
Returns | |
---|---|
String |
a string representation of the object. |
void finalize ()
当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 子类会覆盖finalize
方法来处置系统资源或执行其他清理。
的常规协定finalize
是,它被调用,如果当在Java TM虚拟机已确定不再有由该目的可以通过还没有死亡,除了作为一个动作的结果的任何线程访问的任何手段取决于某些其他可以完成的对象或类别的最终定稿。 finalize
方法可以采取任何行动,包括使该对象再次可用于其他线程; 然而, finalize
的通常目的是在对象被不可撤销地丢弃之前执行清理操作。 例如,表示输入/输出连接的对象的finalize方法可能会执行显式I / O事务,以在永久丢弃该对象之前中断连接。
类Object
的finalize
方法Object
执行特殊操作; 它只是正常返回。 Object
子类可能会覆盖此定义。
Java编程语言不保证哪个线程将为任何给定对象调用finalize
方法。 但是,保证调用finalize的线程在调用finalize时不会保留任何用户可见的同步锁。 如果finalize方法引发未捕获的异常,则忽略该异常,并终止该对象的终止。
在针对某个对象调用 finalize
方法后,将不会采取进一步的操作,直到Java虚拟机再次确定不再有任何途径可以通过任何尚未死亡的线程访问此对象,包括可能的操作通过准备完成的其他对象或类别,此时该对象可能被丢弃。
对于任何给定对象,Java虚拟机永远不会多次调用 finalize
方法。
finalize
方法抛出的任何异常 finalize
导致终止此对象的终止,但会被忽略。
Throws | |
---|---|
Throwable |