检测Android设备何时分离

我有一个 Android应用程序,需要检测USB外围设备何时连接或分离.首次连接外围设备时它工作正常,但是当它随后被分离时,我没有收到任何通知(即,我没有收到动作为ACTION_USB_DEVICE_DETACHED的Intent).

这是我的AndroidManifest.xml的相关部分:

<activity android:name=".LauncherActivity">
    <intent-filter>
        <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
        <action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" />
    </intent-filter>
    <Meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" android:resource="@xml/device_filter" />
    <Meta-data android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" android:resource="@xml/device_filter" />
</activity>

还可能值得注意的是,LauncherActivity仅在连接设备时启动服务,并在分离时停止服务.在任何一种情况下,LauncherActivity总是立即完成.所有这些都发生在LauncherActivity.onCreate中.

有任何想法吗?

解决方法

USB_DEVICE_DETACHED是广播意图,因此您可能希望在清单中声明broadcastReceiver,并使用适当的intent-filter进行分离操作,同时附加元数据.
USB_ACCESSORY_DETACHED也是如此,感兴趣的是谁.

摘要
USB_XXX_ATTACHED是一个活动意图
USB_XXX_DETACHED是广播意图

(其中XXX =设备|附件)

见:http://developer.android.com/guide/components/intents-filters.html

“这些消息传递系统中没有重叠:广播意图仅传递给广播接收者,而不传递给活动或服务”

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...