Android Bluetooth Printing

Я пишу приложение, которое отправляет данные на принтер bluetooth. Может кто-нибудь мне помочь ? Как я могу использовать стек Bluetooth для Android? Или есть ли внешний api или sdk для использования?

Вот мой код для поиска bluetooth …

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() + "\n" + 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 (), тогда данные печатаются только один раз .. Я бы не стал Иметь возможность печатать данные второй раз, пока я не перезапущу bluetooth моего телефона.

Может ли у кого-нибудь есть решение? Или есть ли другой способ избавиться от этой печати?

Solutions Collecting From Web of "Android Bluetooth Printing"

Я получил решение своей проблемы …

Если я хочу печатать данные более одного раза, вам не нужно создавать новое соединение Socket с устройством … вместо этого вызывается метод outputstream.write (bytes).

И в конце, если вы хотите отключить устройство, вызовите метод mBTScoket.close () для отключения устройства.

Если вы установили соединение с устройствами и спарили его.

Поэтому для печати принтер хочет получить байт. Итак, я создал mothod.

Просто вызовите этот метод и передайте строку внутри него, чтобы распечатать.

String str = new String("This is the text sending to the printer");

 private void printData() { // TODO Auto-generated method stub String newline = "\n"; 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; }