android 检测USB是U盘还是外设

1
  1. UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);  
  2.   
  3.         HashMap<String, UsbDevice> deviceList = manager.getDeviceList();  
  4.   
  5.         Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();  
  6.   
  7.         StringBuilder sb = new StringBuilder();  
  8.         while (deviceIterator.hasNext()){  
  9.             UsbDevice usbDevice = deviceIterator.next();  
  10.             sb.append("DeviceName="+usbDevice.getDeviceName()+"\n");  
  11.             sb.append("DeviceId="+usbDevice.getDeviceId()+"\n");  
  12.             sb.append("VendorId="+usbDevice.getVendorId()+"\n");  
  13.             sb.append("ProductId="+usbDevice.getProductId()+"\n");  
  14.             sb.append("DeviceClass="+usbDevice.getDeviceClass()+"\n");  
  15.             int deviceClass = usbDevice.getDeviceClass();  
  16.             if(deviceClass==0) {  
  17.                 UsbInterface anInterface = usbDevice.getInterface(0);  
  18.                 int interfaceClass = anInterface.getInterfaceClass();  
  19.   
  20.                 sb.append("device Class 为0-------------\n");  
  21.                 sb.append("Interface.describeContents()="+anInterface.describeContents()+"\n");  
  22.                 sb.append("Interface.getEndpointCount()="+anInterface.getEndpointCount()+"\n");  
  23.                 sb.append("Interface.getId()="+anInterface.getId()+"\n");  
  24.                 //http://blog.csdn.net/u013686019/article/details/50409421  
  25.                 //http://www.usb.org/developers/defined_class/#BaseClassFFh  
  26.                 //通过下面的InterfaceClass 来判断到底是哪一种的,例如7就是打印机,8就是usb的U盘  
  27.                 sb.append("Interface.getInterfaceClass()="+anInterface.getInterfaceClass()+"\n");  
  28.                 if(anInterface.getInterfaceClass()==7){  
  29.                     sb.append("此设备是打印机\n");  
  30.                 }else if(anInterface.getInterfaceClass()==8){  
  31.                     sb.append("此设备是U盘\n");  
  32.                 }  
  33.                 sb.append("anInterface.getInterfaceProtocol()="+anInterface.getInterfaceProtocol()+"\n");  
  34.                 sb.append("anInterface.getInterfaceSubclass()="+anInterface.getInterfaceSubclass()+"\n");  
  35.                 sb.append("device Class 为0------end-------\n");  
  36.             }  
  37.   
  38.             sb.append("DeviceProtocol="+usbDevice.getDeviceProtocol()+"\n");  
  39.             sb.append("DeviceSubclass="+usbDevice.getDeviceSubclass()+"\n");  
  40.             sb.append("+++++++++++++++++++++++++++\n");  
  41.             sb.append("                           \n");  
  42.         }  
  43.   
  44.         textView.setText(sb);  
  45.     }  

根据不同anInterface.getInterfaceClass()就可以看出来是什么,我已经试出来3是外设,7是打印机,8是U盘,其他的值,你可以根据与自己的需要,插上看看打印是什么。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值