Android - 如何知道使用哪个USB接口?

mgi*_*son 5 usb android

目标是将吉他连接到支持USB主机的Android设备,对信号进行一些处理并通过设备播放.

问题是我找不到太多关于它的文档.显示的设备可以包含6个接口.

但是,在我看到的所有示例中,始终使用第一个接口.

UsbInterface intf = device.getInterface(0);
Run Code Online (Sandbox Code Playgroud)

我的设备包含6个接口但是第一个接口,即getInterface(0)没有端点.3/6没有端点,但其他3个都有1个端点.

我读到你需要找到正确的接口和端点.就我而言,我只希望IN端点接收数据.

任何关于如何做的建议将非常感激.

干杯

mgi*_*son 3

这就是我如何追根究底的。

我相信最后一个界面就是我正在寻找的界面。

  • 它的方向值为 USB_DIR_IN (3)
  • 它有一个端点类型值 USB_ENDPOINT_XFER_ISOC (1) 表示我正在寻找的常规同步连接

    // Cycle through interfaces and print out endpoint info
    StringBuilder builder = new StringBuilder();
    
    for (int i=0; i<device.getInterfaceCount(); i++)
    {
        String epDirString = "No endpoints";
        String epTypeString = "No endpoints";
    
        if (device.getInterface(i).getEndpointCount() > 0)
        {
            epDirString = String.valueOf(device.getInterface(i).getEndpoint(0).getDirection());
            epTypeString = String.valueOf(device.getInterface(i).getEndpoint(0).getType());
        }
    
        builder.append("Int. " + i + " EP count: " + device.getInterface(i).getEndpointCount() + 
                       " || EP direction: " + epDirString + " || EP type: " + epTypeString + "\n");
    }
    
    // Show results in a dialog
    Builder dBuilder = new AlertDialog.Builder(USBActivity.this);       
    dBuilder.setMessage(builder.toString()).show();
    
    Run Code Online (Sandbox Code Playgroud)