android - 小米米 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 版本,但它似乎取决于手机。
我的问题是 - 这是手机的错 - 它只是没有这个界面吗?或者它确实有它,但它必须以某种方式打开?
解决方案
推荐阅读
- excel - 所有数据透视图的vba相同过滤器
- html - 如何将模态框放在页面的绝对前面?
- javascript - 无法正确重新绑定 imagemapster 以设置新的工具提示(TypeError:无法读取属性 '0' of null)
- angular - 共享组件构造函数日志服务 5 次
- java - 如何将 mongodb 集合复制/克隆到另一个集合?
- android - 在 Fragment 中设置一个新的 ListAdapter
- python-3.x - python for循环中的多处理
- angular - 无法在发布请求Angular 6 Form组中传递值
- php - 如何修复“无法添加或更新子行:外键约束失败”
- c++ - C++中模板参数的类继承