2012-01-26 6 views
6

Mi piacerebbe trasformare il mio computer in un accessorio Android usando la mia applicazione. Quindi, invece di un hardware specializzato, questo sarà solo il PC che cambierà il telefono in modalità accessorio, quindi lancerà alcune app Java sul telefono associato all'hardware host e creerà un canale di comunicazione.Accessorio Android basato su software su Windows

Ho trovato un sample code (più alcune app per Android Java) per fare ciò su Linux usando libusb. Funziona "aprendo" il telefono usando il VID standard e il PID. Quindi invia un command to turn on the accessory mode, insieme al modello, alla versione, ai metadati, ecc.

Se il telefono supporta la modalità accessorio, verrà quindi disconnesso e reenumerato con un PID diverso. Il codice di esempio controlla quindi se è stato fatto e apre il nuovo dispositivo.

Tuttavia, sto cercando di farlo funzionare su Windows. Ho trovato alcune librerie USB, come LibUsbDotNet, ma sembrano tutte richiedere il dispositivo utilizzando un driver WinUSB/libusb. Ho usato uno strumento in LibUsbDotNet per generare un driver libusb per il mio telefono, installandolo sulla vecchia unità rimovibile generica. Ma questo significa che ora non posso accedere al telefono come unità rimovibile quando voglio, quindi questa non è una soluzione.

C'è un modo (preferibilmente una libreria) in grado di aprire qualsiasi dispositivo USB collegato basato su VID e PID e quindi inviare alcuni comandi grezzi ad esso?

Successivamente il dispositivo si riporterà con un PID diverso, che posso utilizzare per creare il mio driver WinUSB, quindi non è un problema. Ho solo bisogno di iniettare alcuni comandi attraverso/around il driver predefinito per attivare la modalità accessori.

(io preferirei la soluzione .NET, ma niente di Windows va bene e posso scrivere il mio involucro di interoperabilità)

+0

E il wifi? non puoi usarlo per la comunicazione? – sherif

+0

Purtroppo no, non in questo caso. Inoltre, anche se potessi, USB sarebbe molto meglio - carica il telefono, attiva l'avvio di un'app di back-end sul telefono e l'auto riconosce vari computer in base al numero di serie fornito, innescando una reazione diversa in ciascun caso. – lacop

+0

la domanda è se ne vale la pena si potrebbe anche usare il bluetooth. In teoria puoi usare adb può avviare un'applicazione che ti serve e funziona su usb. i comandi pull e push potrebbero essere utilizzati per trasferire i dati – sherif

risposta

0

Sono anche alla ricerca di una soluzione simile. Ho provato la versione Linux, con libusb, con pochi intoppi, è stato in grado di comunicare con il dispositivo. Durante la ricerca delle soluzioni su Windows ho provato molti hack. Se è necessario comunicare con il dispositivo in modalità ADK, devo inviare diversi Comandi fornitore, ora ciò che devo fare mentre è connesso in modalità Archiviazione di massa. Questo è impossibile usando il driver di archiviazione di massa. Ho cercato di ottenere l'handle del Nodo del dispositivo USB collegato per vedere se poteva inviare il comando del fornitore, ma lì potevo solo archiviare le richieste Get Descriptor. Quindi sono diventato un brutto metodo, ho sostituito il driver di archiviazione di massa con libusb-win32, per vedere che poteva fare lo stesso, SÌ, ha funzionato, ma non è affatto una buona soluzione.

Ancora in cerca ..