阅读:2459回复:0

android 58热敏USB打印机基本步骤

楼主#
更多 发布于:2021-11-16 10:18
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封装了这个接口。
游客

返回顶部