package com.printer.sdk.usb import android.bluetooth.BluetoothDevice import android.content.Context import android.hardware.usb.UsbDevice import android.os.Handler import android.os.Looper import etelligens.com.foodsafety.PrintLabel.PrintClasses.* import java.io.File class Printing(private var printer: Printer, val context: Context) { private lateinit var printables: List private var usbPort = UsbPort(context); var printingCallback: PrintingCallback? = null var extraLinesAtEnd: Byte = 0 init { initUSBCallback() initDeviceCallback() } private fun initUSBCallback() { usbPort.setUsbPortCallback(object : USBCallback { override fun onUSBTurningOn() { TODO("Not yet implemented") } override fun onUSBOn() { usbPort.connectToAddress(); } override fun onUSBTurningOff() { TODO("Not yet implemented") } override fun onUSBOff() { TODO("Not yet implemented") } override fun onUserDeniedActivation() { TODO("Not yet implemented") } }); } private fun initDeviceCallback() { usbPort.setDeviceCallback(object : DeviceCallback { override fun onDeviceConnected(device: BluetoothDevice) { } override fun onDeviceDisconnected(device: BluetoothDevice, message: String) {} override fun onMessage(message: String) { } override fun onError(message: String) { } override fun onConnectError(device: BluetoothDevice, message: String) { } override fun onSerialDeviceConnected(device: File) { } override fun onSerialDeviceDisconnected(device: File, message: String) { TODO("Not yet implemented") } override fun onSerialMessage(message: String) { } override fun onSerialError(message: String) { } override fun onSerialConnectError(device: File, message: String) { } override fun onUsbDeviceConnected(device: UsbDevice) { printPrintables() printingCallback?.printingOrderSentSuccessfully() } override fun onUsbDeviceDisconnected(device: UsbDevice, message: String) { TODO("Not yet implemented") } override fun onUsbMessage(message: String) { printingCallback?.onMessage(message) } override fun onUsbError(message: String) { printingCallback?.onError(message) } override fun onUsbConnectError(device: UsbDevice, message: String) { printingCallback?.connectionFailed(message) } }) } private fun printPrintables() { usbPort.send(printer.initPrinterCommand) // init printer this.printables.forEach { it.getPrintableByteArray(printer).forEach { ops -> usbPort.send(ops) } } //Feed 2 lines to cut the paper if (extraLinesAtEnd > 0) { usbPort.send(printer.feedLineCommand.plus(extraLinesAtEnd)) } Handler(Looper.getMainLooper()).postDelayed({ usbPort.disconnect() }, 2000) } fun print(printables: ArrayList) { this.printables = printables printingCallback?.connectingWithPrinter() // usbPort.onStart() if (!usbPort.isEnabled) usbPort.enable() else usbPort.connectToAddress(); } }