【问题标题】:Android - How to know which USB interface to use?Android - 如何知道使用哪个 USB 接口?
【发布时间】:2014-04-09 13:20:22
【问题描述】:

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

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

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

UsbInterface intf = device.getInterface(0);

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

我读到您需要找到正确的接口和端点。就我而言,我只想要一个 IN 端点来接收数据。

任何关于如何做到这一点的建议将不胜感激。

干杯

【问题讨论】:

  • 如果你不知道与设备接口的细节,我强烈建议你先用桌面 linux 来解决这个问题,只有在你了解你需要做什么后才移植到 android .

标签: android usb


【解决方案1】:

这就是我深究的方式。

最后一个界面,我相信就是我要找的那个。

  • 方向值为 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();
    

【讨论】:

    猜你喜欢
    • 2012-12-04
    • 2011-05-16
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 2022-06-22
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多