android - 什么是 USB 接口(interface)子类 66?

标签 android usb

我在 USB Host documentation 的设备过滤器中看到这个接口(interface)子类但 int 也未在 UsbConstants documentation 中定义.

我插入USB有两种情况。

其中之一,我的应用程序在开发板的前台运行(运行 android 4.x)。当我插入 USB 时,我收到了 Action

android.hardware.usb.action.USB_DEVICE_ATTACHED

然后打印出我得到的设备界面

Interface: UsbInterface[mId=0,mClass=255,mSubclass=66,mProtocol=1,mEndpoints=[Landroid.os.Parcelable;@418044c0]

另一方面,应用程序已关闭。当我插入设备并接受提示时,我收到附加的操作并打印出接口(interface)列表,其中似乎有两个设备

Interface: UsbInterface[mId=0,mClass=255,mSubclass=255,mProtocol=0,mEndpoints=[Landroid.os.Parcelable;@417496c8]
Interface: UsbInterface[mId=1,mClass=255,mSubclass=66,mProtocol=1,mEndpoints=[Landroid.os.Parcelable;@417498b0]

那么,什么是 mSubclass 66(我知道 255 是 UsbConstants.USB_CLASS_VENDER_SPEC,我相信这是我的 USB 附件),为什么两种不同的情况会产生两种不同的结果?

最佳答案

因为您的设备类别是特定于供应商的,所以由供应商定义子类,因此 usb.org 不会定义任何内容。如果您需要更多信息,您应该查找设备的供应商(您可以从设备描述符中的 VID 中找到供应商)。

如果您在打开应用程序时发现缺少其中一个接口(interface),则可能是它已经在设备上打开了一个句柄,而您无法访问它。

关于android - 什么是 USB 接口(interface)子类 66?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20802581/

相关文章:

c# - 在 C# 中发现串行端口

security - 如何在 OSX 上欺骗 USB 供应商 ID 和产品 ID 值?

c# - 仅将 API URL 限制为 Android 应用程序

java - 为类的任何函数编写可线程包装器?

linux-kernel - 怎么办 "make drivers/usb/storage/usb-storage.ko"

delphi - 如何使用Delphi 2009调用Microchip PIC USB DLL

android - Android平台编程获取USB设备的vendor ID、product ID

Android Studio 3.1 Gradle 插件 4.4 KotlinNullPointerException

Android - 将 rtsp (h264) 流保存到 mp4 文件

java - android开机时如何启动activity?