Android 藍芽開發,藍芽連印表機。
阿新 • • 發佈:2019-02-06
public synchronized void connect(String macAddress, BluetoothDevice device) { if (mThread != null) { mThread.interrupt(); mThread = null; } if (socket != null) { try { mGpService.closePort(0); } catch (Exception e) { e.printStackTrace(); } socket = null; } mThread = new ConnectThread(macAddress, device); mThread.start(); } private class ConnectThread extends Thread { private BluetoothDevice mmDevice; private OutputStream mmOutStream; public ConnectThread(String mac, BluetoothDevice device) { mmDevice = device; String SPP_UUID = "00001101-0000-1000-8000-00805f9b34fb"; try { if (socket == null) { socket = device.createRfcommSocketToServiceRecord(UUID.fromString(SPP_UUID)); } } catch (Exception e) { e.printStackTrace(); } } public void run() { adapter.cancelDiscovery(); try { Log.i(TAG, "run(MainActivity.java:362)--->> " + "連線socket"); if (socket.isConnected()) { Log.i(TAG, "run(MainActivity.java:364)--->> " + "已經連線過了"); } else { if (socket != null) { try { if (mGpService != null) { int state = mGpService.getPrinterConnectStatus(0); switch (state) { case GpDevice.STATE_CONNECTED: break; case GpDevice.STATE_LISTEN: Log.i(TAG, "run(MainActivity.java:374)--->> " + "state:STATE_LISTEN"); break; case GpDevice.STATE_CONNECTING: Log.i(TAG, "run(MainActivity.java:377)--->> " + "state:STATE_CONNECTING"); break; case GpDevice.STATE_NONE: Log.i(TAG, "run(MainActivity.java:380)--->> " + "state:STATE_NONE"); registerBroadcast(); mGpService.openPort(0, 4, mmDevice.getAddress(), 0); break; default: Log.i(TAG, "run(MainActivity.java:385)--->> " + "state:default"); break; } } else { Log.i(TAG, "run(MainActivity.java:389)--->> " + "mGpService IS NULL"); } } catch (Exception e) { e.printStackTrace(); } } } } catch (Exception connectException) { Log.i(TAG, "run(MainActivity.java:397)--->> " + "連線失敗"); try { if (socket != null) { mGpService.closePort(0); socket = null; } } catch (Exception closeException) { } } } }
連線狀態的廣播