I am implementing one app.
Based on my requirement, I want to take a printout from a zebra mz320 printer through mobile bluetooth.
I am trying to make a pair from mobile bluetooth
to printer bluetoth.
When I try to pair, the printer throws a message like "Type 1234 or 0000 PIN for make connection.
I typed the same PIN.
But the printer is not paired to my mobile device.
It throws an exception like com.zebra.android.comm.ZebraPrinterConnectionException: Could not connect to printer: Unable to start Service Discovery
If anyone knows the solution, please help me.
Thanks in advance.
UUIDs list see here. You should try one or all from this snippets in queue to make connection:
@TargetApi(10) private BluetoothSocket connectDeviceUsingAPI10() throws IOException {
BluetoothSocket socket = null; IOException ioex = null; int port = 1; // may be from 1 to 14 if I'm not confused UUID SPP_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); // way #0. Connect using workaround for Android < 2.3 try { if (!isThreadActive) return null; Log.d("Try via API10: createInsecureRfcommSocketToServiceRecord"); socket = mDevice.createInsecureRfcommSocketToServiceRecord(SPP_UUID); // or RFCOMM_UUID); } catch (IOException e) { ioex = e; } if (socket != null && ioex == null) { try { socket.connect(); setStreams(socket.getOutputStream(), socket.getInputStream()); } catch (IOException ex) { ioex = ex; try { socket.close(); } catch (IOException e) { } finally { socket = null; } } } if (socket != null && ioex == null) { return socket; } ioex = null; socket = null; // way #1. Using standard secure connection procedure via UUID try { if (!isThreadActive) return null; Log.d("Try via API10: createRfcommSocketToServiceRecord"); socket = mDevice .createRfcommSocketToServiceRecord(SPP_UUID);// or RFCOMM_UUID } catch (IOException e) { ioex = e; } if (socket != null && ioex == null) { try { socket.connect(); setStreams(socket.getOutputStream(), socket.getInputStream()); } catch (IOException ex) { ioex = ex; try { socket.close(); } catch (IOException e) { } finally { socket = null; } } } if (socket != null && ioex == null) { return socket; } // way #2. Using hidden api procedure with insecure socket socket = null; ioex = null; // Try to fallback to API5 method try { if (!isThreadActive) return null; Log.d("Try via API10: createInsecureRfcommSocket"); Method m = mDevice.getClass().getMethod( "createInsecureRfcommSocket", new Class[] { int.class }); socket = (BluetoothSocket) m.invoke(mDevice, Integer.valueOf(port)); } catch (IOException e) { // ... } if (socket != null && ioex == null) { try { socket.connect(); setStreams(socket.getOutputStream(), socket.getInputStream()); } catch (IOException ex) { ioex = ex; try { socket.close(); } catch (IOException e) { } finally { socket = null; } } } if (socket != null && ioex == null) { return socket; } ioex = null; socket = null; // way #3. Connect using workaround for Android < 2.3 try { if (!isThreadActive) return null; Log.d("Try via API10: createRfcommSocket"); Method m = mDevice.getClass().getMethod("createRfcommSocket", new Class[] { int.class }); socket = (BluetoothSocket) m.invoke(mDevice, Integer.valueOf(port)); } catch (IOException e) { ioex = e; } if (socket != null && ioex == null) { try { socket.connect(); setStreams(socket.getOutputStream(), socket.getInputStream()); } catch (IOException ex) { ioex = ex; try { socket.close(); } catch (IOException e) { } finally { socket = null; } } } if (socket != null && ioex == null) { return socket; } return socket; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With