2011-08-24 80 views
3

我看到有关检测USB连接的其他文章,但他们没有专门谈论MPT,只是更普遍的检测,所以我想我会问具体关于MTP。Android Honeycomb 3.2通过USB检测MTP连接

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

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

我看到一些intests上市android.developer如:

ACTION_MEDIA_SHARED

ACTION_UMS_CONNECTED

ACTION_UMS_DISCONNECTED

但这些都是用于USB大容量存储和Xoom的是MTP而不是USB海量存储。

当你看到logcat输出时,这应该是可能的,因为随着MTP服务器的启动和停止,USB连接被记录下来。

d /沃尔德(85):USB断开

d /圈养(155):InitialState.processMessage什么= 4

d /圈养(155):sendTetherStateChangedBroadcast 0,0,0

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

d /圈养(155):1 sendTetherStateChangedBroadcast,0,0

d /圈养(155):interfaceAdded:USB0

d/MtpService(2674):addStorageLocked 65537的/ mnt/SD卡

d/MtpService(2674):在开始MTP服务器

d/MtpService (2674):addStorageLocked 65537到/ mnt/SD卡

d /沃尔德(85):USB连接

有谁知道我可以完成我的目标是什么?即使能够检测到USB连接/断开连接也可能适用于我,但正如我在其他一些帖子中看到的,这似乎不可能。

谢谢!

回答

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

所以用这个广播,你可以知道,如果智能手机已在USB被插入,即使它使用MTP协议。

要知道,如果智能手机被拔掉你探微必须检查时,从BATTERY_PLUGGED_USBEXTRA_PLUGGED值更改为0

+0

这不适用于具有专用充电器的设备。 – Macchiato

+0

当电源连接没有时,它也不适用于诊断USB连接何时闪烁。 – Michael

1

收听该广播android.hardware.usb.action.USB_STATE我已经测试了它,并将其与PTP或MTP功能的设备的工作原理。有一个布尔额外的“连接”,会告诉你,如果USB电缆连接或没有。