2012-05-17 17 views
7

Chcę komunikować się z moją aplikacją Android z mojego komputera za pomocą kabla do transmisji danych USB. Który słuchacz powinienem zaimplementować?Komunikacja za pomocą kabla danych USB w Androidzie

Myślę, że połączenie TCP będzie pasowało do moich potrzeb, ale łączenie się z nim przez sterownik adb wydaje się akward.

Jak mogę komunikować się z systemu Windows na Androidzie za pomocą kabla do transmisji danych?

Odpowiedz

8

Znalazłem fajny wpis na ten temat here. Zasadniczo potrzebujesz adb, aby przesłać port między urządzeniem z Androidem a komputerem. Na przykład:

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

Następnie można użyć standardowego programowania gniazd, zarówno w urządzeniu z systemem Android, jak i na komputerze.

+0

Wielkie dzięki za napiwek! – opc0de

+0

próbowałem tego (mój ap używa portu 21121), a następnie wyłączam Wi-Fi na tablecie i uruchamiam ap (PC i Android, które mają rozmawiać ze sobą). nie robią tego w momencie, gdy robię Socket socket = new Socket (mServerIP, 21121); gniazdo nie powiedzie się IOException – steveh

+0

Myślę, że to nie będzie działać dla mnie, ponieważ mam gniazdo serwera na PC (nie słuchać i akceptować) i gniazdo klienta na Androida. Chyba muszę zrobić przekierowanie portów na Androida? Próbowałem coupe wolnych forwarderów portowych, ale żaden nie działał. – steveh

3

Android obsługuje wiele urządzeń peryferyjnych USB i akcesoriów USB Android (sprzęt implementujący protokół akcesoriów Android) w dwóch trybach: akcesorium USB i host USB. W trybie akcesoriów USB zewnętrzny sprzęt USB działa jak host USB.

o więcej informacji patrz: USB Host and Accessory i przykładem click here

+2

Niefortunne akcesoria USB i tryby hosta są obsługiwane bezpośrednio w systemie Android 3.1 :(Nieczęści ludzie mają Androida 3.1 lub wyższą – opc0de

+0

Możesz korzystać z biblioteki zewnętrznej, zobacz tutaj: http://developer.android.com/guide/topics/usb /accessory.html#choosing – Hesam

1

Trzeba mieć kabla transmisji danych USB (zwany także kabel USB łącza danych), które wsparcie API lub SDK, a następnie użyć następującego kodu:

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


} 

Patrz: Reference1, Reference2

0

Jeśli ilość danych jest niska może po prostu skopiować pliki iz powrotem za pomocą protokołu MTP protokół. Łatwo dostępny na większości urządzeń i nie wymaga włączania debugowania USB ani korzystania z trybu akcesoriów USB.

Powiązane problemy