检测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性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...