2012-01-26 13 views
6

Me gustaría convertir mi computadora en un accesorio de Android utilizando mi aplicación. Por lo tanto, en lugar de un hardware especializado, esta será solo una PC que cambiará el teléfono al modo de accesorio, lo que pondrá en marcha una aplicación Java en el teléfono asociada con el hardware host y creará un canal de comunicación.Accesorio Android basado en software en Windows

He encontrado un sample code (más alguna aplicación Java de Android) para hacer esto en Linux usando libusb. Funciona "abriendo" el teléfono usando el VID estándar y el PID. Luego envía un command to turn on the accessory mode, junto con los metadatos como modelo, versión, etc.

Si el teléfono admite el modo accesorio, se desconectará y volverá a enumerar con un PID diferente. El código de muestra luego verifica si lo hizo y abre el nuevo dispositivo.

Sin embargo, estoy intentando que esto se ejecute en Windows. He encontrado algunas bibliotecas USB, como LibUsbDotNet, pero todas parecen requerir el dispositivo usando un controlador WinUSB/libusb. Utilicé una herramienta en LibUsbDotNet para generar un controlador libusb para mi teléfono, instalándolo sobre el disco genérico extraíble. Pero esto significa que ahora no puedo acceder al teléfono como una unidad extraíble cuando quiero, por lo que esta no es una solución.

¿Hay alguna manera (preferiblemente una biblioteca) que pueda abrir cualquier dispositivo USB conectado basado en VID y PID, y luego enviarle algunos comandos sin procesar?

Después de eso, el dispositivo volverá a enumerar con un PID diferente, que puedo utilizar para crear mi propio controlador WinUSB, por lo que no es un problema. Solo necesito inyectar algunos comandos en/alrededor del controlador predeterminado para activar el modo de accesorio.

(yo preferiría solución .NET, pero nada de Windows está muy bien y puedo escribir mi propio contenedor de interoperabilidad)

+0

¿qué tal wifi? ¿No puedes usar eso para la comunicación? – sherif

+0

Desafortunadamente, no, no en este caso. Además, incluso si pudiera, USB sería mucho mejor: carga el teléfono, desencadena el lanzamiento de una aplicación de back-end en el teléfono y el auto reconoce varias computadoras según el número de serie provisto, lo que provoca una reacción diferente en cada caso. – lacop

+0

la pregunta es si vale la pena el esfuerzo también puede usar bluetooth. Teóricamente, podría usar adb, puede iniciar una aplicación que necesita y funciona a través de usb. los comandos de extracción y extracción podrían usarse para transferir datos. – sherif

Respuesta

0

También estoy buscando una solución similar. Intenté con la versión de Linux, con libusb, con pequeños "hickups", pude comunicarme con el dispositivo. Mientras buscaba las soluciones en Windows probé muchos hacks. Si necesito comunicarme con el dispositivo en modo ADK, necesito enviar varios comandos de proveedor, ahora esto es lo que tengo que hacer mientras está conectado en el modo de almacenamiento masivo. Esto es imposible usando el controlador Mass Storage. Traté de obtener el identificador de Node del dispositivo USB conectado para ver si podía enviar el comando del proveedor, pero allí solo podía presentar solicitudes Get Descriptor. Así que fui el método feo, reemplacé el controlador de almacenamiento masivo con libusb-win32, para ver si podía hacer lo mismo, SÍ, funcionó, pero para nada fue una buena solución.

Aún buscando ..

Cuestiones relacionadas