阅读:2460回复:0
android 58热敏USB打印机基本步骤
1. 检测打印机是否连接:
Map<String, UsbDevice> devMap = usbMgr.getDeviceList(); for (String name : devMap.keySet()) { UsbInterface usbInterface; if ((usbInterface = usbDevice.getInterface(0)) != null) { if (usbInterface.getInterfaceClass() == UsbConstants.USB_CLASS_PRINTER) 2. 检测权限: usbManager.hasPermission(usbDevice) 3. 连接打印机 public static final int TIMEOUT = 1000; public UsbInterface mInterface; public UsbEndpoint mWriteEndpoint = null; public UsbEndpoint mReadEndpoint = null; public UsbDeviceConnection mConn = null; for(int index = 0; index < usbDevice.getInterfaceCount(); ++index) { UsbInterface usbInterface; if ((usbInterface = usbDevice.getInterface(index)).getInterfaceClass() == 7 && usbInterface.getInterfaceSubclass() == 1 && usbInterface.getInterfaceProtocol() == 2) { Log.e(LOG_TAG, "usbDevice: " + usbDevice); mInterface = usbInterface; break; } } for(int index = 0; index < mInterface.getEndpointCount(); ++index) { UsbEndpoint endpoint; if ((endpoint = mInterface.getEndpoint(index)).getDirection() == 0) { mWriteEndpoint = endpoint; } else { mReadEndpoint = endpoint; } } mConn.claimInterface(mInterface, true); 4. 打印: byte[] bytes = new byte[]{(byte) 27, (byte) 64}; mConn.bulkTransfer(mWriteEndpoint, bytes, bytes.length, TIMEOUT);//初始化打印机: try { bytes = "你要打印的文字\n".getBytes("gbk"); mConn.bulkTransfer(mWriteEndpoint, bytes, bytes.length, TIMEOUT); bytes = new byte[]{(byte) 10};//输出换行 mConn.bulkTransfer(mWriteEndpoint, bytes, bytes.length, TIMEOUT); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } 就这几个步骤,市面上有不少sdk封装了这个接口。 |
|