Android Honeycomb 3.2通过USB检测MTP连接

时间:2011-08-24 22:17:01

标签: android usb

我看到有关检测USB连接的其他帖子,但是他们没有专门讨论MPT而只是更普遍的检测,所以我想我会特别询问MTP。

我正在通过USB将我的Xoom连接到计算机,我希望我的应用程序在建立MTP连接时写出文件。当USB断开连接并且MTP服务器已停止时,我想写出另一个文件。

所以我想检测连接和未连接的情况。我似乎无法找到发生这种情况时发送的任何意图。

我在android.developer上看到了一些列出的函数,例如:

  

ACTION_MEDIA_SHARED

     

ACTION_UMS_CONNECTED

     

ACTION_UMS_DISCONNECTED

但这些用于USB大容量存储,而Xoom可用于MTP而非USB大容量存储。

当您看到logcat输出,因为USB连接与MTP服务器的启动和停止一起被记录时,这应该是可能的。

  

D / Vold(85):USB已断开连接

     

D / Tethering(155):InitialState.processMessage what = 4

     

D / Tethering(155):sendTetherStateChangedBroadcast 0,0,0

     

D / MtpService(2674):停止MTP服务器

     

D / Tethering(155):sendTetherStateChangedBroadcast 1,0,0

     

D / Tethering(155):interfaceAdded:usb0

     

D / MtpService(2674):addStorageLocked 65537 / mnt / sdcard

     

D / MtpService(2674):启动MTP服务器

     

D / MtpService(2674):addStorageLocked 65537 / mnt / sdcard

     

D / Vold(85):USB已连接

有人知道如何实现我的目标吗?即使是检测USB连接/断开连接的能力也可能对我有用,但正如我在其他一些帖子中看到的那样,这似乎不太可能。

谢谢!

2 个答案:

答案 0 :(得分:2)

我想知道同样的事情,我提出了另一种选择:

我检查了batery状态。当电池发生事件时,会调用一个名为ACTION_BATTERY_CHANGED的意图。在这个意图中,有一些额外的字段包含一些信息。其中之一是EXTRA_PLUGGED

Indicating whether the device is plugged in to a power source; 0 means it is on battery, other constants are different types of power sources.

其他常量为BATTERY_PLUGGED_ACBATTERY_PLUGGED_USB

通过此广播,即使使用MTP协议,您也可以知道智能手机是否已插入USB。

要知道智能手机是否已拔下,您必须检查EXTRA_PLUGGED值何时从BATTERY_PLUGGED_USB变为0

答案 1 :(得分:1)

收听此广播android.hardware.usb.action.USB_STATE我已对其进行了测试,它可与支持PTP或MTP的设备配合使用。有一个布尔额外的“连接”,它将告诉你USB电缆是否已连接。