2014-02-03 6 views
1

Я хочу реализовать передачу аудиоданных между приложениями Android & через USB-кабель.Android: USB Связь между внешним устройством и Android-приложением

Я видел android USB document & это пример кода. Я могу обнаружить & подключить внешнее устройство в приложении Android.

Как передавать (отправлять/получать) данные между внешним устройством & Android-приложение?

EDIT:

Позвольте мне объяснить, что я сделал до сих пор.

Я нашел устройство & это интерфейс по нижестоящему коду.

UsbManager mManager = (UsbManager) getSystemService(Context.USB_SERVICE); 

// check for existing devices 
for (UsbDevice device : mManager.getDeviceList().values()) { 
    ArrayList<UsbInterface> intf = findInterface(device); 
} 

// searches for an interface on the given USB device 
static private ArrayList<UsbInterface> findInterface(UsbDevice device) { 
    ArrayList<UsbInterface> usbIntf = new ArrayList<UsbInterface>(); 

    int count = device.getInterfaceCount(); 
    for (int i = 0; i < count; i++) { 
     UsbInterface intf = device.getInterface(i); 

     if(intf.getEndpointCount() > 0) { 
      for(int j = 0; j < intf.getEndpointCount(); j++) {     
       if(intf.getEndpoint(j).getType() == UsbConstants.USB_ENDPOINT_XFER_ISOC) { 
        usbIntf.add(intf); 
       } 
      }    
     }  
    } 
    return usbIntf; 
} 

соединение, то устрой & претензии интерфейса на код ниже.

// open device connection 
UsbDeviceConnection connection = mManager.openDevice(device); 

boolean isSuccess = false; 
if (connection != null) {  
    for (int i = 0; i < usbIntf.size(); i++) { 
     UsbInterface intf = usbIntf.get(i); 
     isSuccess = connection.claimInterface(intf, false); 
    }   
} 

претензииИнтерфейс возвращает мне успех.

Согласно android developer doc, 128 для USB_DIR_IN & 0 для USB_DIR_OUT. Итак, я взял эти два интерфейса. Я нашел в & выходных точках ниже кода.

for(int i = 0; i < usbIntf.size(); i++) { 
    UsbInterface intf = usbIntf.get(i); 

    for (int j = 0; j < intf.getEndpointCount(); j++) { 
     UsbEndpoint ep = intf.getEndpoint(j); 
     if(ep.getType() == UsbConstants.USB_ENDPOINT_XFER_ISOC) { 
      if(ep.getDirection() == UsbConstants.USB_DIR_OUT) { 
       epOut = ep; 
      } 
      else if (ep.getDirection() == UsbConstants.USB_DIR_IN) { 
       epIn = ep; 
      } 
     } 
    }   
} 

Внешние детали устройства:

Device Class : 0, Subclass : 0, Protocol : 0, 
Device ID : 2002, Device Name : /dev/bus/usb/002/002, 
Interface Count : 6, Product Id : 316, Vendor ID : 3468 

Intarface & это конец Точечные детали:

1. Interface Class : 1, Subclass : 1, Protocol : 0, EndpointCount : 0, ID : 0 

2. Interface Class : 1, Subclass : 2, Protocol : 0, EndpointCount : 0, ID : 1 

3. Interface Class : 1, Subclass : 2, Protocol : 0, EndpointCount : 1, ID : 1 
Endpoint : 0 : Type : 1, Direction : 0, 
Details : UsbEndpoint[mAddress=1,mAttributes=9,mMaxPacketSize=200,mInterval=1] 

4. Interface Class : 1, Subclass : 2, Protocol : 0, EndpointCount : 0, ID : 2 

5. Interface Class : 1, Subclass : 2, Protocol : 0, EndpointCount : 1, ID : 2 
Endpoint : 0 : Type : 1, Direction : 128, 
Details : UsbEndpoint[mAddress=130,mAttributes=9,mMaxPacketSize=100,mInterval=1] 

6. Interface Class : 3, Subclass : 0, Protocol : 0, EndpointCount : 1, ID : 3 
Endpoint : 0 : Type : 3, Direction : 128, 
Details : UsbEndpoint[mAddress=135,mAttributes=3,mMaxPacketSize=4,mInterval=2] 
+0

Также см. [Использование API хоста Andriod USB для чтения моего игрового контроллера USB или других данных устройства USB] (http://stackoverflow.com/questions/11899957/using-andriod-usb-host-api-to-read-my -usb-game-controller-or-other-usb-device-da) и комментарий к статье вне офиса. В опубликованной статье показано, как читать и писать через конечные точки. – jww

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^