UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();
StringBuilder sb = new StringBuilder();
while (deviceIterator.hasNext()){
UsbDevice usbDevice = deviceIterator.next();
sb.append("DeviceName="+usbDevice.getDeviceName()+"\n");
sb.append("DeviceId="+usbDevice.getDeviceId()+"\n");
sb.append("VendorId="+usbDevice.getVendorId()+"\n");
sb.append("ProductId="+usbDevice.getProductId()+"\n");
sb.append("DeviceClass="+usbDevice.getDeviceClass()+"\n");
int deviceClass = usbDevice.getDeviceClass();
if (deviceClass == 0) {
UsbInterface anInterface = usbDevice.getInterface(0);
int interfaceClass = anInterface.getInterfaceClass();
sb.append("device Class 为0-------------\n");
sb.append("Interface.describeContents()="+anInterface.describeContents()+"\n");
sb.append("Interface.getEndpointCount()="+anInterface.getEndpointCount()+"\n");
sb.append("Interface.getId()="+anInterface.getId()+"\n");
//http://blog.csdn.net/u013686019/article/details/50409421
//http://www.usb.org/developers/defined_class/#BaseClassFFh
//通过下面的InterfaceClass 来判断到底是哪一种的,例如7就是打印机,8就是usb的U盘
sb.append("Interface.getInterfaceClass()="+anInterface.getInterfaceClass()+"\n");
if (anInterface.getInterfaceClass() == UsbConstants.USB_CLASS_PRINTER) {
sb.append("此设备是打印机\n");
} else if(anInterface.getInterfaceClass() == UsbConstants.USB_CLASS_MASS_STORAGE){
sb.append("此设备是U盘\n");
} else if(anInterface.getInterfaceClass() == UsbConstants.USB_CLASS_HUB){
sb.append("此设备是HUB\n");
}
sb.append("anInterface.getInterfaceProtocol()="+anInterface.getInterfaceProtocol()+"\n");
sb.append("anInterface.getInterfaceSubclass()="+anInterface.getInterfaceSubclass()+"\n");
sb.append("device Class 为0------end-------\n");
}
sb.append("DeviceProtocol="+usbDevice.getDeviceProtocol()+"\n");
sb.append("DeviceSubclass="+usbDevice.getDeviceSubclass()+"\n");
sb.append("+++++++++++++++++++++++++++\n");
sb.append(" \n");
}
textView.setText(sb);
}
根据不同anInterface.getInterfaceClass()就可以看出来是什么,我已经试出来3是外设,7是打印机,8是U盘,其他的值,你可以根据与自己的需要,插上看看打印是什么。
可以查看 UsbConstants.USB_CLASS_MASS_STORAGE