我有一个 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
仅在设备连接时启动 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/