我看到有关检测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连接/断开连接的能力也可能对我有用,但正如我在其他一些帖子中看到的那样,这似乎不太可能。
谢谢!
答案 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_AC
和BATTERY_PLUGGED_USB
通过此广播,即使使用MTP协议,您也可以知道智能手机是否已插入USB。
要知道智能手机是否已拔下,您必须检查EXTRA_PLUGGED
值何时从BATTERY_PLUGGED_USB
变为0
答案 1 :(得分:1)
收听此广播android.hardware.usb.action.USB_STATE
我已对其进行了测试,它可与支持PTP或MTP的设备配合使用。有一个布尔额外的“连接”,它将告诉你USB电缆是否已连接。