首页 > 解决方案 > 小米米 A1(和其他)上的 USB 接口

问题描述

我在 Android 上有一个应用程序,它使用 USB 与外部设备通信。虽然通常该应用程序运行良好,但在某些手机上却不能(如小米米 A1)。连接的设备可见,我可以获取 VID 和 PID 但无法通信。问题是该设备作为 CDC 设备可见,并且与它不通信的电话不返回 CDC 接口(通信设备类)。例如在 Pixel 4 上:

private @Nullable UsbInterface[] getInterfaceList() {
    if (mInterfaces == null) {
        int configurationCount = mConfigurations.length;
        int interfaceCount = 0;
        for (int i = 0; i < configurationCount; i++) {
            UsbConfiguration configuration = mConfigurations[i];
            interfaceCount += configuration.getInterfaceCount();
        }

        mInterfaces = new UsbInterface[interfaceCount];
        int offset = 0;
        for (int i = 0; i < configurationCount; i++) {
            UsbConfiguration configuration = mConfigurations[i];
            interfaceCount = configuration.getInterfaceCount();
            for (int j = 0; j < interfaceCount; j++) {
                mInterfaces[offset++] = configuration.getInterface(j);
            }
        }
    }

返回2个接口:

int USB_CLASS_COMM = 2;
int USB_CLASS_CDC_DATA = 0x0a;

但在小米米 A1 上它只返回 int USB_CLASS_COMM = 2;

并且没有 USB_CLASS_CDC_DATA 应用程序无法连接到设备。

虽然它似乎不依赖于 Android 版本,但它似乎取决于手机。

我的问题是 - 这是手机的错 - 它只是没有这个界面吗?或者它确实有它,但它必须以某种方式打开?

标签: androidusbcommunication

解决方案


推荐阅读