Я могу показать вам, как я печатаю этикетки через Bluetooth на принтере Zebra, включая штрих-код 2 из 5. Язык печати - CPCL, и его необходимо установить в микропрограмме принтера через утилиты принтера.
Класс singleton:
import android.bluetooth.BluetoothDevice
import android.os.Looper
import android.util.Log
import com.zebra.sdk.comm.BluetoothConnection
object PrinterUtil {
fun printCpcl(
bDevice: BluetoothDevice,
str1: String,
str2: String,
str3: String,
str4: String,
str5: String
) {
Thread(Runnable {
try {
val printerConnection = BluetoothConnection(bDevice.address)
Looper.prepare()
printerConnection.open()
val cpclData = "! 0 200 200 700 1\r\n" +
"LABEL\r\n" +
"PAGE-WIDTH 700\r\n" +
"COUNTRY USA\r\n" +
"BARCODE I2OF5 2 2 100 70 135 " + str1 + "\r\n" +
"ST TT0003M_.TTF 16 16 86 240 " + str1 + "\r\n" +
"ST TT0003M_.TTF 15 16 70 9 str2: " + str2 + "\r\n" +
"ST TT0003M_.TTF 12 16 70 70 " + str3 + "\r\n" +
"ST TT0003M_.TTF 13 16 320 177 Str4: " + str4 + "\r\n" +
"ST TT0003M_.TTF 14 16 320 127 Str5: " + str5 + "\r\n" +
"FORM\r\n" +
"PRINT\r\n"
if (printerConnection.isConnected) {
printerConnection.write(cpclData.toByteArray())
Thread.sleep(500)
printerConnection.close()
Looper.myLooper().quit()
}
} catch (e: Exception) {
e.printStackTrace()
}
}).start()
}
}
Метод вызова в действии:
private var btList = BluetoothAdapter.getDefaultAdapter().bondedDevices.toMutableList()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(getContentView())
try {
PrinterUtil.printCpcl(
btList[0],
str1,
str2,
str3,
str4,
str5
)
} catch (e: ConnectionException) {
Log.d(null, "failed to print...")
}
}
Надеюсь, это поможет.