Android蓝牙打印

于今腐草无萤火,终古垂杨有暮鸦。这篇文章主要讲述Android蓝牙打印相关的知识,希望能为你提供帮助。
我正在编写一个将数据发送到蓝牙打印机的应用程序。谁能帮我 ?如何使用android蓝牙堆栈进行打印?或者是否有任何外部api或sdk使用?
这是我搜索蓝牙的代码...

bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); registerReceiver(ActionFoundReceiver, new IntentFilter(BluetoothDevice.ACTION_FOUND)); private final BroadcastReceiver ActionFoundReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BluetoothDevice.ACTION_FOUND.equals(action)) { BluetoothDevice device = intent .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); btArrayAdapter.add(device.getName() + " " + device.getAddress()); btArrayAdapter.notifyDataSetChanged(); } } };

这是我的数据发送到打印机的代码..
BluetoothDevice mDevice = bluetoothAdapter.getRemoteDevice("00:15:FF:F2:56:A4"); Method m = mDevice.getClass().getMethod("createRfcommSocket", new Class[] { int.class }); mBTsocket = (BluetoothSocket) m.invoke(mDevice, 1); System.out.println("Connecting....."); mBTsocket.connect(); System.out.println("Connected"); OutputStream os = mBTsocket.getOutputStream(); os.flush(); os.write(Receipt.getBytes()); // mBTsocket.close();

当我写socket.close()时,数据没有打印到打印机,因为套接字连接在打印数据之前关闭..如果我没有写socket.close()那么数据只打印一次..我不会能够第二次打印数据,直到我重新启动手机的蓝牙。
任何人都可以解决它?还是有其他方法可以摆脱这种印刷?
答案【Android蓝牙打印】我得到了问题的解决方案......
如果我想打印数据超过一次,那么你不需要与设备创建新的套接字连接...而是调用outputstream.write(bytes)方法。
最后,如果要断开设备,请调用mBTScoket.close()方法断开设备。
另一答案您可以将printooth库用于任何打印机,printooth很简单且记录良好,https://github.com/mazenrashed/Printooth
var printables = ArrayList< Printable> () var printable = Printable.PrintableBuilder() .setText("Hello World") //The text you want to print .setAlignment(DefaultPrinter.ALLIGMENT_CENTER) .setEmphasizedMode(DefaultPrinter.EMPHASISED_MODE_BOLD) //Bold or normal .setFontSize(DefaultPrinter.FONT_SIZE_NORMAL) .setUnderlined(DefaultPrinter.UNDELINED_MODE_ON) // Underline on/off .setCharacterCode(DefaultPrinter.CHARACTER_CODE_USA_CP437) // Character code to support languages .setLineSpacing(DefaultPrinter.LINE_SPACING_60) .setNewLinesAfter(1) // To provide n lines after sentence .build() printables.add(printable) BluetoothPrinter.printer().print(printables)

另一答案如果您已连接到设备并将其配对。
所以对于打印,打印机需要字节。所以我创建了一个方法。
只需调用此方法并将String传递给它即可打印。
String str = new String("This is the text sending to the printer");
private void printData() { // TODO Auto-generated method stubString newline = " "; try { out.write(str.getBytes(),0,str.getBytes().length); Log.i("Log", "One line printed"); } catch (IOException e) { Toast.makeText(BluetoothDemo.this, "catch 1", Toast.LENGTH_LONG).show(); e.printStackTrace(); Log.i("Log", "unable to write "); flagCheck = false; } try { out.write(newline.getBytes(),0,newline.getBytes().length); } catch (IOException e) { Log.i("Log", "Unable to write the new line::"); e.printStackTrace(); flagCheck = false; } flagCheck = true; }


    推荐阅读