我正在将我构建的USB设备(dsPIC33E供电)连接到通用7" A13-MID android。
我在运行LogCat的TCPIP上使用ADB。
当我插入我的设备时,我在LogCat中得到了这个:
I/USB3G (90): event { 'add', '/devices/platform/sw_hcd_host0/usb1/1-1', 'usb', '', 189, 7 }
I/USB3G (90): path : '/sys/devices/platform/sw_hcd_host0/usb1/1-1'
I/USB3G (90): VID :size 5,vid_path '/sys/devices/platform/sw_hcd_host0/usb1/1- 1/idVendor',VID '04d8'.
I/USB3G (90): PID :size 5,Pid_path '/sys/devices/platform/sw_hcd_host0/usb1/1-1/idProduct',PID '003f'.
I/USB3G (90): cmd=/system/etc/usb_modeswitch.sh /system/etc/usb_modeswitch.d/04d8_003f &,
I/USB3G (90): excute ret : 0,err:No such file or directory
我在调试模式ADT中运行MissileLauncher Demo。
我可以在Fire中设置一个断点,当我按下Fire按钮时,代码就会中断(所以调试工作正常)。
我已将Product-ID和Vendor-ID设置为device_filter.xml中的正确值。
然后我在这里设置一个断点:
UsbDevice device = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) {
setDevice(device);
} else if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) {
if (mDevice != null && mDevice.equals(device)) {
setDevice(null);
}
}
当我在休息后单步执行代码时,意图。行已执行,但未输入以下if语句,且永远不会调用setDevice(device)
(setDevice(null)
也不会。)
我确实希望调用setDevice(device)。毕竟,我已经插入了设备,android看到我将其插入(参见上面的LogCat)并且我正确设置了device_filter.xml。
我错过了什么?
其他信息,我安装的应用程序' USB设备'看到设备但在Linux选项卡下列出它。我希望这对我来说不是坏消息!
谢谢, 戴尔
我试图单独列举这些设备,但没有'是的' (实际上HashMap中没有返回任何设备):
HashMap<String, UsbDevice> deviceList = mUsbManager.getDeviceList();
Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();
while(deviceIterator.hasNext()){
UsbDevice device1 = deviceIterator.next();
//your code
if (device1.getVendorId()==1240) {
savetofile("Yeah!");
}
}
不确定这是否相关,但是android已根植而且就是这样。
答案 0 :(得分:0)
原来我需要使用root权限并进行我在这个已回答的问题中找到的更改:
Android USB host and hidden devices
我在正确的轨道上,现在我又是:)。我相信其他人会发现我对这个答案很有帮助。
但是,只有HashMap枚举方法有效,intent过滤方法仍然将动作作为android.intent.action.MAIN返回。
感谢您的投入!
戴尔