2011-09-19 23 views
7

Me gustaría usar libusb en mi aplicación de Android (Java GUI + núcleo nativo (C++)). Ya he compilado libusb y he intentado llamar a sus funciones, pero libusb_open devuelve LIBUSB_ERROR_ACCESS. Supongo que hay un problema con los permisos de acceso USB, pero no sé cómo resolver el problema. Entonces, 2 preguntas aquí: 1) ¿Cómo hacer que libusb se ejecute en un dispositivo rooteado de Android 3.1? 2) ¿Es posible usar libusb en un dispositivo no rooteado y predeterminado de fábrica?Uso de libusb en la aplicación de Android: cómo permitir que la aplicación acceda a USB

Gracias de antemano.

P. S. En cuanto a la pregunta 1, he intentado chmod 666 para/dev/bus/usb, pero dice "permiso denegado" (tenga en cuenta que mi dispositivo está rooteado).

P.P.S. mount usbfs none/proc/bus/usb -o devmode = 0666 ni siquiera se ejecuta, como si hubiera perdido algo (pero no lo hice).


sé a ciencia cierta que es posible conseguir libusb trabajando en un dispositivo Android arraigada con el anfitrión del USB, pero nunca he conseguido, así que tuve que restringir la aplicación para Android 3.1 + y utilizar las API USB.

+0

Al parecer está trabajando con Android 3.1, ¿ha considerado el uso de las API [USB] (http://developer.android.com/ guía/temas/usb/index.html) en el SDK de Android? – Frxstrem

+0

@Frxstrem: sí, tuve que recurrir a esa solución. No estoy muy contento con él, pero funciona y es la forma estándar de usar USB en Android, así que creo que debería cerrar la pregunta. –

+2

no lo cierres, solo respóndelo. –

Respuesta

0

En android, no puede abrir directamente el dispositivo usb usando libusb (esta es la conclusión a la que llegó :).

¿Por qué no pudiste abrir?

Necesita obtener el permiso del sistema Android (! = Kernel) para abrir un dispositivo.

hacerlo en Java:

cuando se solicita, una ventana emergente se muestra al usuario que acepte o rechace. , por lo que debe abrir el dispositivo en java y extraer el archivo fd usando java y pasarlo a libusb para que pueda comunicarse con el dispositivo.

ahora ¿cómo construirá libusb un controlador de fd?

Actualización: Mantengo una versión de libusb específica modificada para Android (con más correcciones - probado/trabajando en Android 5.1 y versiones anteriores). ver https://gitlab.com/madresistor/libusb/blob/android/README

ENLACE VIEJO (enlace no válido) aquí la solución: https://github.com/martinmarinov/rtl_tcp_andro-/blob/master/jni/libusb-andro/libusb/core.c#L993

+0

El enlace está roto. – jayeffkay

+0

@jayeffkay Enlace actualizado. Gracias. –

Cuestiones relacionadas