将USB设备连接到Android Emulator?

将USB设备连接到Android Emulator?,android,android-emulator,usb,android-3.0-honeycomb,Android,Android Emulator,Usb,Android 3.0 Honeycomb,我们一直在研究Android 3.1+及其对连接到OTG/主机端口的USB设备的读/写能力 我已经找到了一些代码示例,这些示例允许我检测USB HID设备并对其进行读/写操作,但目前我还没有一个物理3.1+兼容的设备可供部署和远程调试 有人知道我如何通过PC/Eclipse将我的HID设备连接到emulator,以便应用程序能够检测并读取/写入设备吗 我试着列出了当前连接的USB设备,但它没有显示,正如您毫无疑问地猜测的那样 有什么想法吗 干杯!这是不可能的。Android模拟器不会模拟真实设备

我们一直在研究Android 3.1+及其对连接到OTG/主机端口的USB设备的读/写能力

我已经找到了一些代码示例,这些示例允许我检测USB HID设备并对其进行读/写操作,但目前我还没有一个物理3.1+兼容的设备可供部署和远程调试

有人知道我如何通过PC/Eclipse将我的HID设备连接到emulator,以便应用程序能够检测并读取/写入设备吗

我试着列出了当前连接的USB设备,但它没有显示,正如您毫无疑问地猜测的那样

有什么想法吗


干杯!这是不可能的。Android模拟器不会模拟真实设备中存在的许多东西。。。但这让我想起了一个故事

这并不是对你问题的直接肯定回答,但也许它可以帮助你找到一个解决方法,就像我所做的那样:在物理x86上网本(双启动)上安装一个“模拟器”,并使用中提到的链接通过WiFi或蓝牙完成你正在尝试做的事情


希望这能有所帮助。

在virtualBox或vm player上使用创建android虚拟机

连接USB并使用ADB Connect(您的设备IP)连接Eclipse


Android仿真器基于QEMU。即使emulator版本如此古老,也似乎支持从主机传递USB设备。它似乎不适用于ARM设备,但是,模拟的ARM机器没有USB控制器。(我已经尝试为基于Linux 3.4的goldfish_armv7内核启用所有USB主机控制器,但运气不佳。默认的仿真器goldfish_armv7内核甚至没有启用主机USB。)

如果您不局限于ARM并且可以使用x86,那么我建议您检查一下,它的图像可以与标准的i386(或x86_64)机器一起使用。通过在Linux上使用KVM扩展,这也会产生更好的性能

要通过供应商ID为1234、设备ID为abcd的USB设备,可以运行emulator命令:

emulator -avd x86-machine -qemu -usb -usbdevice host:1234:abcd
或者,在使用QEMU时:

qemu-system-i386 -m 1G -cdrom android-x86.iso -usb -usbdevice host:1234:abcd
您需要对
/dev/bus/usb/XXX/YYY
具有读/写权限,为此您可以创建udev规则,例如:

SUBSYSTEM!="usb", GOTO="end_skip_usb"
ATTRS{idVendor}=="1234", ATTRS{idProduct}=="abcd", TAG+="uaccess"
LABEL="end_skip_usb"

现在,在插入USB设备时,您的模拟器应该能够识别USB设备。这是针对使用Android x86 4.3映像的Linux安装进行测试的。

在virtualbox中使用Windows 7主机安装了Android guest,使用的映像是来自的Android-x86-4.0-r1-eeepc.iso(因为我公司的计算机锁定了bios,我无法启用vt-x仿真,我必须安装4.4之前的版本)。然后插入usb驱动器,在Virtualbox管理器中打开VM-Settings-usb,单击右侧带有加号的第二个图标,选择usb驱动器。然后,Virtualbox为USB驱动器安装了驱动程序。完成后,启动android虚拟机。启动OpenManage,转到mnt/USB,USB驱动器的文件就在那里

命令
qemu-system-x86_64-device help
列出了所有可能的虚拟设备的名称;虽然我同样加载它们
-usb-readconfig.android/avd/intel pch xhci.cfg
,但我认为最好明确-usbdevice-host选项仅适用于Linux。来源:--2.3.3 USBoptions@TomUSB主机功能取决于Windows也支持哪种主机。在过去,QEMU有一个Linux依赖项,但在QEMU 1.5中用()改变了这一点。我认为文档已经过时。这可能需要Android guest中的其他驱动程序,这些驱动程序可能可用,也可能不可用。正如@Lekensteyn所说,我确实需要其他驱动程序,我必须重建内核并启用usb API: