2012-05-17 15 views
7

Quiero comunicarme con mi aplicación de Android desde mi computadora con el cable de datos usb. ¿Qué oyente debería implementar?Comunicación de cable de datos USB en Android

Creo que una conexión TCP se adaptará a mis necesidades, pero la conexión con el controlador adb parece incómoda.

¿Cómo puedo comunicarme desde Windows a Android usando un cable de datos?

Respuesta

8

Encontré una buena publicación sobre este tema here. Básicamente necesita adb para hacer el reenvío de puertos entre el dispositivo Android y la PC. Como ejemplo:

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

Luego puede usar la programación de socket estándar, tanto en el dispositivo Android como en la PC.

+0

¡Genial! ¡Gracias por la sugerencia! – opc0de

+0

intenté eso (mi ap usa un puerto 21121) luego apagué wifi en la tableta y ejecuté mi ap (pc y android que se supone que hablan juntos). no lo hacen en el momento en que lo hago Socket socket = new Socket (mServerIP, 21121); el zócalo falla IOException – steveh

+0

Creo que esto no me va a funcionar porque tengo el zócalo del servidor en la PC (escucha y acepta) y el zócalo del cliente en Android. ¿Supongo que tengo que hacer el reenvío de puertos en Android? Probé un cupé de transitarios gratuitos, pero ninguno funcionó. – steveh

3

Android es compatible con una variedad de periféricos USB y accesorios USB de Android (hardware que implementa el protocolo de accesorio de Android) a través de dos modos: accesorio USB y host USB. En el modo de accesorio USB, el hardware USB externo actúa como hosts USB.

para más información ver: USB Host and Accessory y el ejemplo click here

+2

Unfortunatley Los modos de host y accesorio USB son compatibles directamente con Android 3.1 :(. No manny personas tienen android 3.1 o superior – opc0de

+0

Puede usar la biblioteca externa. Consulte aquí: http://developer.android.com/guide/topics/usb /accessory.html#choosing – Hesam

1

Usted necesita tener un cable de transferencia de datos USB (también llamado cable de enlace de datos USB), que API de soporte o SDK, a continuación, utilizar el siguiente código:

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(); 


} 

Ver: Reference1, Reference2

0

Si el volumen de datos es baja que sólo podría copiar archivos de un lado a otro mediante el uso de MTP protocolo. Fácilmente disponible en la mayoría de los dispositivos y no requiere habilitar la depuración de USB o usar el modo de accesorio USB.

Cuestiones relacionadas