public class MainActivity extends AppCompatActivity { private static final String ACTION_USB_PERMISSION = "com.android.usb.USB_PERMISSION"; private PrinterInstance lll; private UsbManager manager; private int printingStatus; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); UsbDevice usbDevice = showUsbList(); Log.e("213123","123333333333333"); if (usbDevice!=null){ //广播 PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0); IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION); filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED); filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED); manager.requestPermission(usbDevice, pendingIntent); //PrinterInstance初始化 lll = PrinterInstance.getPrinterInstance(this, usbDevice, new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); int what = msg.what; Log.d("lll", what + ""); } @Override public void dispatchMessage(Message msg) { super.dispatchMessage(msg); int what = msg.what; // Object obj = msg.obj; // String s = obj.toString(); // Log.e("shiiii",s); switch (what){ case PrinterConstants.Connect.SUCCESS: Toast.makeText(MainActivity.this,"链接成功",Toast.LENGTH_LONG).show(); initPrint(); break; case PrinterConstants.Connect.FAILED: Toast.makeText(MainActivity.this,"链接失败",Toast.LENGTH_LONG).show(); break; case PrinterConstants.Connect.CLOSED: Toast.makeText(MainActivity.this,"链接关闭",Toast.LENGTH_LONG).show(); break; case PrinterConstants.Connect.NODEVICE: break; } } }); boolean b = lll.openConnection(); if (b){ Log.e("打印机","链接成功"); }else { Log.e("打印机","连接失败"); } } } /** * 打印的api */ private void initPrint() { if (lll==null){ return; } lll.initPrinter(); lll.setFont(0,3,3,0,0); lll.setPrinter(PrinterConstants.Command.ALIGN, PrinterConstants.Command.ALIGN_CENTER); //获得打印机的状态 int currentStatus = lll.getCurrentStatus(); switch (currentStatus){ case 0: //正常" Log.e("再打印","再打印"); lll.printText("12312312312312312312312312321321\r\n"); // PrinterConstants.PRotate pRotate = PrinterConstants.PRotate.valueOf("10"); // lll.print(pRotate,0); //切纸 lll.cutPaper(65, 1); //获得打印是否完成 printingStatus =lll.getPrintingStatus(30 * 1000); break; case -1: //接收数据异常 break; case -2: //缺纸 break; case -3: //纸将打尽 break; case -4: //打印机开盖 break; case -5: //发送数据异常 break; } switch (printingStatus){ case 0: //打印完成 Toast.makeText(MainActivity.this,"打印完成",Toast.LENGTH_LONG).show(); break; case -1: //未知异常 Toast.makeText(MainActivity.this,"未知异常",Toast.LENGTH_LONG).show(); break; case -2: //当前打印机正在打印 Toast.makeText(MainActivity.this,"当前打印机正在打印",Toast.LENGTH_LONG).show(); break; case -3: //打印未完成,缺纸 Toast.makeText(MainActivity.this,"打印未完成,缺纸 ",Toast.LENGTH_LONG).show(); break; case -4: //打印未完成,纸舱盖开盖 Toast.makeText(MainActivity.this," 打印未完成,纸舱盖开盖 ",Toast.LENGTH_LONG).show(); break; case -5: //打印未完成,与打印机通信失败 Toast.makeText(MainActivity.this," 打印未完成,与打印机通信失败 ",Toast.LENGTH_LONG).show(); break; case -6: //数据发送失败,通信异常 Toast.makeText(MainActivity.this," 数据发送失败,通信异常 ",Toast.LENGTH_LONG).show(); break; case -7: //接收数据格式不正确 Toast.makeText(MainActivity.this,"接收数据格式不正确 ",Toast.LENGTH_LONG).show(); break; } } /*** * 获得USB的api * @return */ public UsbDevice showUsbList() { manager = (UsbManager) getSystemService(Context.USB_SERVICE); HashMap<String, UsbDevice> deviceList = manager.getDeviceList(); Log.e("集合",deviceList.size()+""); UsbDevice vv=null; 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"); Log.e("anInterface","="+anInterface.getInterfaceClass()); if (anInterface.getInterfaceClass() == 7) { sb.append("此设备是打印机\n"); Log.e("此设备是打印机","此设备是打印机"); vv=usbDevice; //广播 // PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0); // IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION); // filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED); // filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED); // manager.requestPermission(usbDevice, pendingIntent); return usbDevice; } else if (anInterface.getInterfaceClass() == 8) { sb.append("此设备是U盘\n"); Log.e("此设备是U盘","此设备是U盘"); vv=null; } // 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"); } //Log.d("liexingshi",sb.toString()); // textView.setText(sb); return vv; } }
热敏打印PrinterInstance
最新推荐文章于 2022-02-26 15:09:10 发布