有没有人成功使用"android.hardware.usb.action.USB_DEVICE_ATTACHED"来检测USB设备连接的情况?
我正在尝试使用新的USB主机模式功能来检测USB设备的连接。为了我的目的,我希望在任何时候都能收到关于设备连接的通知。但是我无法看到它发生。我正在使用已知可以工作的广播接收器(当我让它监听其他事件,例如按下Home按钮)。无论我尝试什么,我似乎都无法触发意图......所以为了简化事情,我决定放弃自己的项目,尝试使用谷歌的示例代码,看看能否至少让那个代码运行起来。虽然我没有导弹发射器,但我想至少能让USB_Device_Attached这个意图启动。但依旧失败了。我尝试调整设备过滤器xml文件。首先,我尝试添加我的设备(一个键盘):
<usb-device vendor-id="1050" product-id="0010" />
我从lsusb命令中获取了设备的供应商信息和产品信息。当设备连接时,logcat显示已经找到该设备。
D/EventHub( 144): No input device configuration file found for device 'Yubico Yubico Yubikey II'.
I/EventHub( 144): New device: id=43, fd=219, path='/dev/input/event8', name='Yubico Yubico Yubikey II', classes=0x80000003, configuration='', keyLayout='/system/usr/keylayout/Generic.kl', keyCharacterMap='/system/usr/keychars/Generic.kcm', builtinKeyboard=false
I/InputReader( 144): Device added: id=43, name='Yubico Yubico Yubikey II', sources=0x00000101
I/ActivityManager( 144): Config changed: { scale=1.0 imsi=0/0 loc=en_US touch=3 keys=2/1/1 nav=1/2 orien=L layout=0x10000014 uiMode=0x11 seq=47}
D/MissileLauncherActivity(16191): intent: android.intent.action.MAIN
I/EventHub( 144): Removed device: path=/dev/input/event8 name=Yubico Yubico Yubikey II id=43 fd=219 classes=0x80000003
I/InputReader( 144): Device removed: id=43, name='Yubico Yubico Yubikey II', sources=0x00000101
I/ActivityManager( 144): Config changed: { scale=1.0 imsi=0/0 loc=en_US touch=3 keys=1/1/2 nav=1/2 orien=L layout=0x10000014 uiMode=0x11 seq=48}
D/dalvikvm( 144): GC_EXPLICIT freed 78K, 26% free 14717K/19719K, paused 3ms+3ms
D/MissileLauncherActivity(16191): intent: android.intent.action.MAIN
xoom可以找到键盘,而且可以从设备上使用它(我可以在浏览器中使用它输入字母)。并且意图有点触发了(但它只会触发android.intent.action.MAIN),我从未收到DEVICE_ATTACHED Intent。日志条目来自示例代码:
Log.d(TAG, "intent: " + intent.getAction().toString());
在恢复函数中,经过更深入的挖掘并删除任何对usb的引用后,我发现当键盘连接/断开时(因此出现了intent: android.intent.action.MAIN日志条目),我制作的每个应用程序都会调用恢复函数。
目前我能想到的唯一解释是这是Android源代码中的一个bug。
顺便说一下,我正在使用OS 3.1版本的wifi xoom。