function print(mac_address) {
if (!mac_address) {
mui.toast('請選擇藍牙打印機');
return;
}
main = plus.android.runtimeMainActivity();
BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter");
UUID = plus.android.importClass("java.util.UUID");
uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
BAdapter = BluetoothAdapter.getDefaultAdapter();
device = BAdapter.getRemoteDevice(mac_address);
plus.android.importClass(device);
bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid);
plus.android.importClass(bluetoothSocket);
if (!bluetoothSocket.isConnected()) {
console.log('檢測到設備未連接,嘗試連接....');
bluetoothSocket.connect();
}
console.log('設備已連接');
if (bluetoothSocket.isConnected()) {
var outputStream = bluetoothSocket.getOutputStream();
plus.android.importClass(outputStream);
// outputStream.write([0x1B,0x0E]); // 設置打印字符以正常寬度的2倍打印。
// outputStream.write([0x1B,0x14]); // 取消字符倍寬打印。
outputStream.write([0x1B, 0x57, 0x02]); // 設置字符倍寬倍高打印
outputStream.write([0x1B, 0x61, 0x01]); // 設置字符倍寬倍高打印
outputStream.write(plus.android.invoke("\n七天在線\n", 'getBytes', 'gbk')); //bytes
outputStream.write([0x1B, 0x57, 0x01]); // 設置字符倍寬倍高打印
outputStream.write([0x1B, 0x61, 0x00]); // 選擇對齊方式左對齊
outputStream.write(plus.android.invoke("\n結賬單號:123456789\n", 'getBytes', 'gbk')); //bytes
outputStream.write(plus.android.invoke("\n賬單金額:100元\n", 'getBytes', 'gbk')); //bytes
outputStream.write(plus.android.invoke("\n支付方式:支付寶\n", 'getBytes', 'gbk')); //bytes
outputStream.write(plus.android.invoke("\n結賬時間:2019年6月3日13:52:18\n", 'getBytes', 'gbk')); //bytes
outputStream.write(plus.android.invoke("\n交易單號:8888888888\n\n\n\n\n\n\n", 'getBytes', 'gbk')); //bytes
outputStream.write([0x1F, 0x11, 0x00, 0x16, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e,
0x62, 0x61, 0x69, 0x64, 0x75, 0x2e, 0x63, 0x6f, 0x6d, 0x2f
]); // 打印二維碼
outputStream.flush();
device = null //這里關鍵
bluetoothSocket.close(); //必須關閉藍牙連接否則意外斷開的話打印錯誤
}
}