2012-05-17 17 views
7

Voglio comunicare con la mia applicazione Android dal mio computer con il cavo dati USB. Quale ascoltatore dovrei implementare?Comunicazione via cavo dati USB in Android

Penso che una connessione TCP soddisferà le mie esigenze ma il collegamento con il driver adb sembra akward.

Come posso comunicare da Windows ad Android utilizzando un cavo dati?

risposta

8

Ho trovato un bel post su questo argomento here. Fondamentalmente è necessario adb per fare il port forwarding tra il dispositivo Android e il PC. Ad esempio:

C:\android-sdk-windows\tools\adb.exe forward tcp:38300 tcp:38300 

Quindi è possibile utilizzare la programmazione socket standard, sia nel dispositivo Android che nel PC.

+0

Ottimo! Grazie per il suggerimento! – opc0de

+0

l'ho provato (il mio ap utilizza una porta 21121), quindi spengo il wifi sul tablet e apro il mio ap (pc e android che dovrebbero parlare insieme). non lo fanno al momento Socket socket = new Socket (mServerIP, 21121); il socket fallisce IOException – steveh

+0

penso che questo non funzionerà per me perché ho il socket del server sul PC (lo ascolta e accetta) e il socket client su Android. Suppongo che ho bisogno di fare port forwarding su Android? Ho provato un coupé di port forwarders gratuiti ma nessuno ha funzionato. – steveh

3

Android supporta una varietà di periferiche USB e accessori USB Android (hardware che implementa il protocollo accessorio Android) attraverso due modalità: accessorio USB e host USB. In modalità accessorio USB, l'hardware USB esterno funge da host USB.

Per maggiori informazioni visita: USB Host and Accessory ed esempio click here

+2

Unfortunatley USB e le modalità host sono supportate direttamente in Android 3.1 :(. Le persone non manine hanno Android 3.1 o versione successiva – opc0de

+0

È possibile utilizzare la libreria esterna. Vedere qui: http://developer.android.com/guide/topics/usb /accessory.html#choosing – Hesam

1

È necessario disporre di un cavo di trasferimento dati USB (chiamato anche cavo di collegamento dati USB), che supporto API o SDK, quindi utilizzare il seguente codice:

void usb2usbComm() 
{ 
BYTE  buf[65530]; 
LPU2URET pU2uRet; 
BOOL  bRet; 
int   ret; 
CString  msgstr; 

ret = u2u_open(); 
if (ret == -1){ 
    AfxMessageBox("Open U2U device Success."); 
}else{ 
    msgstr.Format("Open U2U device fail,return:%d", ret); 
    AfxMessageBox(msgstr); 
    return; 
} 

//send data 
bRet = u2u_SendData(buf, 65530, ret); 
if(!bRet) 
{ 
    msgstr.Format("Send data error,return:%d", ret); 
    AfxMessageBox(msgstr); 
    return; 
} 

//receive data 
while (1){ 
    bRet = u2u_RecvData(recvData, dataLen, ret); 
    if(!bRet) 
    { 
     msgstr.Format("Receive data error,return:%d", ret); 
     AfxMessageBox(msgstr); 
     u2u_close(); 
     return; 
    }else{ 
     break; 
    } 
} 
u2u_close(); 


} 

See: Reference1, Reference2

0

Se il volume dei dati è basso si potrebbe semplicemente i file copiare avanti e indietro utilizzando MTP protocollo. Prontamente disponibile sulla maggior parte dei dispositivi e non richiede l'abilitazione del debug USB o l'utilizzo della modalità accessorio USB.

Problemi correlati