2

我正在将我构建的 USB 设备(由 dsPIC33E 供电)连接到通用 7" A13-MID android。

我在运行 LogCat 的情况下使用 ADB over TCPIP。

当我插入我的设备时,我在 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

我有 MissileLauncher Demo 在调试模式 ADT 下运行。

我可以在 Fire 中设置一个断点,当我按下 Fire 按钮时,代码会在那里中断(所以调试工作正常)。

我已在 device_filter.xml 中将 Product-ID 和 Vendor-ID 设置为正确的值。

然后我在这里设置一个断点:

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);
    }
}

当我在休息后单步执行代码时,意图。line 被执行,但是下面的 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是植根的,它就是这样来的。

4

1 回答 1

0

原来我需要使用 root 权限并做出我在这个回答的问题中找到的更改:

Android USB 主机和隐藏设备

我走在正确的轨道上,现在我又来了:)。我相信其他人会发现我寻求此答案的努力很有帮助。

但是,只有 HashMap 枚举方法有效,intent filter 方法仍然返回 action 作为 android.intent.action.MAIN。

感谢您的输入!

戴尔

于 2013-01-16T19:52:24.257 回答