android - 检测 USB 设备何时在 Android 上分离

标签 android android-intent

我有一个 Android 应用需要检测 USB 外围设备何时连接或分离。首次连接外围设备时它工作正常,但我没有收到任何通知(即,我没有收到操作为 ACTION_USB_DEVICE_DETACHEDIntent)随后分离。

这是我的 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 仅在设备连接时启动 Service,并在设备断开时停止服务。在任何一种情况下,LauncherActivity 总是立即完成。所有这些都发生在 LauncherActivity.onCreate 中。

有什么想法吗?

最佳答案

USB_DEVICE_DETACHED 是一个广播 Intent ,因此您可能希望在 list 中声明 BroadcastReceiver,并使用适当的 Intent 过滤器进行分离操作,并附加元数据。 USB_ACCESSORY_DETACHED 也一样,有兴趣的可以看看。

总结:
USB_XXX_ATTACHED是一个activity intent
USB_XXX_DETACHED是广播 Intent

(其中 XXX = 设备 | 附件)

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

“这些消息系统之间没有重叠:广播 Intent 仅传递给广播接收器,从不传递给 Activity 或服务”

关于android - 检测 USB 设备何时在 Android 上分离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15763159/

相关文章:

android - 控制台 TextView android

android - 在 Android 中更改 MapView 缩放控件外观的正确方法是什么?

android - 当我不知道 key 时如何从 sharedpreference 中获取值

java - Android Studio 通过不同的 Activity 计时

javascript - 如何更新已安装的 PhoneGap/Cordova 插件?

android - 如何将默认首选项样式应用于自定义首选项?

Android:使用警报管理器定期获取电池状态

android - JobIntentService 不会在 Android 8.0 上立即启动

android - 在 Android 中检测 VPN 背后

android - 在 Android 的 Pending Intent 中传递值