Android 什么是USB接口子类66?

Android 什么是USB接口子类66?,android,usb,Android,Usb,我看到在的设备筛选器中指定了这个接口子类,但在中也没有定义int 有两种情况下,我插入USB 其中一个例子是,我的应用程序在开发板的前台运行(运行Android4.x)。当我插入USB时,我收到动作 android.hardware.usb.action.USB_DEVICE_ATTACHED 然后我打印出我得到的设备接口 Interface: UsbInterface[mId=0,mClass=255,mSubclass=66,mProtocol=1,mEndpoints=[Landroid

我看到在的设备筛选器中指定了这个接口子类,但在中也没有定义int

有两种情况下,我插入USB

其中一个例子是,我的应用程序在开发板的前台运行(运行Android4.x)。当我插入USB时,我收到动作

android.hardware.usb.action.USB_DEVICE_ATTACHED
然后我打印出我得到的设备接口

Interface: UsbInterface[mId=0,mClass=255,mSubclass=66,mProtocol=1,mEndpoints=[Landroid.os.Parcelable;@418044c0]
另一种情况是关闭应用程序。当我插入设备并接受提示时,我会收到附加的操作并打印出界面列表,该列表似乎有两个设备

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\u CLASS\u VENDER\u SPEC
,我相信这是我的USB配件),为什么这两种不同的场景会产生两种不同的结果?

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

如果在打开应用程序时发现其中一个接口丢失,则可能该应用程序已在设备上打开句柄,而您无法访问它