将USB设备连接到Android模拟器?

时间:2011-10-24 11:41:09

标签: android android-emulator usb android-3.0-honeycomb

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

我找到了一些代码示例,允许我检测和读取/写入USB HID设备,但目前,我根本没有物理3.1+兼容设备来部署和远程调试。< / p>

有没有人知道如何通过PC / Eclipse将我的HID设备连接到模拟器,以便应用程序可以检测和读取/写入设备?

我已尝试列出当前连接的USB设备,但它没有显示,因为您无疑会猜测。

有什么想法吗?

干杯

4 个答案:

答案 0 :(得分:12)

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

如果您不限于ARM并且可以使用x86,那么我建议查看http://www.android-x86.org/,其图像可以与标准QEMU i386(或x86_64)计算机一起使用。通过在 Linux 上使用KVM扩展,这也可以获得更好的性能。

要通过供应商ID 1234 且设备ID abcd 的USB设备,您可以运行模拟器命令:

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安装进行测试的。

答案 1 :(得分:8)

AFAIK这是不可能的。 Android模拟器不能模拟真实设备中存在的许多东西......但这让我想起了attempt to run ADB over Bluetooth

这不是对您的问题的直接肯定答案,但也许它可以帮助您找到解决方法的方式:在物理x86上网本(双启动)上安装“模拟器”并使用上面提到的链接my posts通过WiFi或蓝牙实现您的目标。

希望这有帮助。

答案 2 :(得分:2)

使用this image在virtualBox或vm播放器上创建android虚拟机。

使用ADB connect(您的设备IP)连接USB并与Eclipse连接。

enter image description here

答案 3 :(得分:0)

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