2011-10-24 39 views
26

Hemos estado buscando en Android 3.1+ y su capacidad para leer/escribir en dispositivos USB conectados al puerto OTG/Host.¿Conectar el dispositivo USB al emulador de Android?

He encontrado algunos ejemplos de código que me permiten detectar y leer/escribir en un dispositivo USB HID, pero por el momento, simplemente no tengo un dispositivo físico 3.1+ compatible para implementar y depurar de forma remota.

¿Alguien sabe cómo puedo conectar mi dispositivo HID al emulador, a través de PC/Eclipse para que la aplicación pueda detectar y leer/escribir en/desde el dispositivo?

He intentado enumerar los dispositivos USB actualmente conectados pero no muestra ninguno, como sin duda lo adivinará.

¿Alguna idea?

Cheers

Respuesta

6

AFAIK esto no es posible. Los emuladores de Android no emulan muchas cosas que existen en dispositivos reales ... pero esto me recuerda un attempt to run ADB over Bluetooth.

Esta no es una respuesta positiva directa a su pregunta, pero quizás pueda ayudarlo a encontrar una solución de la manera que lo hice: instale un "emulador" en una netbook física x86 (arranque dual) y use los enlaces mencionados en my posts para lograr lo que estás tratando de hacer a través de WiFi o Bluetooth.

Espero que esto ayude.

+0

Por supuesto que es posible. – rolls

1

Crear máquina virtual de Android en VirtualBox o reproductor de VM con esta image

Conexión USB y conectar con Eclipse usando adb connect (ur IP del dispositivo)

enter image description here

7

El emulador de Android está basado en QEMU . Incluso si la versión del emulador es tan antigua, parece que hay soporte para pasar dispositivos USB desde el host. Sin embargo, no parece estar disponible para dispositivos ARM, la máquina ARM emulada no tiene un controlador USB. (Ya he intentado habilitar todos los controladores de host USB para el kernel goldfish_armv7 basado en Linux 3.4, sin suerte. El kernel emulator goldfish_armv7 predeterminado ni siquiera tiene habilitado el Host USB.)

Si no está limitado a ARM y puede usar x86, entonces sugiero verificar http://www.android-x86.org/, sus imágenes se pueden utilizar con una máquina estándar QEMU i386 (o x86_64). Esto también produce un mejor rendimiento al usar la extensión KVM en Linux.

Para PASSTHROUGH un dispositivo USB con el de la identificación del vendedor 1234 Identificación y el dispositivo ABCD, puede ejecutar el comando emulador:

emulator -avd x86-machine -qemu -usb -usbdevice host:1234:abcd 

O, cuando se utiliza QEMU:

qemu-system-i386 -m 1G -cdrom android-x86.iso -usb -usbdevice host:1234:abcd 

Necesitará permisos de lectura/escritura para /dev/bus/usb/XXX/YYY, para eso puede crear una regla de udev como:

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

Ahora, al insertar el dispositivo USB, su emulador debería reconocer un dispositivo USB. Esto se prueba para una instalación de Linux con un Android x86 4.3 imagen.

+0

el comando 'qemu-system-x86_64 -dispositivo de ayuda' enumera los nombres de todos los dispositivos virtuales posibles; mientras los cargo igual '-usb -readconfig .android/avd/intel-pch-xhci.cfg'. –

+1

Creo que sería bueno dejar en claro que la opción del host -usbdevice es solo Linux. fuente: - https://qemu.weilnetz.de/doc/qemu-doc.html - 2.3.3 Opciones USB – Tom

+0

@Tom La funcionalidad del host USB depende de [libusb] (http://libusb.info/) que es también compatible con Windows. En el pasado, QEMU tenía una dependencia de Linux, pero eso se modificó en QEMU 1.5 con [este compromiso] (https://git.qemu.org/?p=qemu.git;a=commit;h=2b2325ff6491224a42e1fec99b1c39fbc521c95c) ([changelog ] (https://wiki.qemu.org/index.php/ChangeLog/1.5#USB)). Creo que la documentación está desactualizada. – Lekensteyn

0

Invitado de Android instalado en la caja virtual con el host de Windows 7 con la imagen android-x86-4.0-r1-eeepc.iso de here (porque la computadora de mi empresa bloqueó la BIOS y no pude habilitar la emulación vt-x que tuve que instalar una versión anterior a 4.4). Luego conectó una unidad usb, abrió VM - Configuración - USB en el Administrador de Virtualbox, hizo clic en el segundo icono a la derecha con un signo más, eligió la unidad usb. Virtualbox luego instaló el controlador para la unidad USB. Después de que terminó, arrancó la máquina virtual de Android. ¡Comenzó OpenManager, fue a mnt/USB, y los archivos de la unidad usb estaban allí!

Cuestiones relacionadas