public long rfServerAcceptAndOpenRfServerConnection(long handle) throws IOException { EmulatorRFCOMMService s = ((EmulatorRFCOMMService) activeLocalDevice().getConnection(handle)); if (!localDevice.isConnectable()) { throw new BluetoothStateException("Local device is not connectable"); } long clientHandle = 0; boolean success = false; while (!success) { long connectionHandle = s.accept(); try { long remoteAddress = localDevice .getDeviceManagerService() .getRemoteAddress(localDevice.getAddress(), connectionHandle); EmulatorRFCOMMClient c = localDevice.createRFCOMMClient(remoteAddress); c.connect(remoteAddress, connectionHandle); localDevice .getDeviceManagerService() .connectionAccepted(localDevice.getAddress(), connectionHandle); success = true; clientHandle = c.getHandle(); } catch (IOException e) { DebugLog.debug("fail to accept connection", e); continue; } finally { if (!success) { localDevice .getDeviceManagerService() .closeConnection(localDevice.getAddress(), connectionHandle); } } } return clientHandle; }
public long connectionRfOpenClientConnection(BluetoothConnectionParams params) throws IOException { EmulatorRFCOMMClient c = activeLocalDevice().createRFCOMMClient(params.address); boolean success = false; try { c.connect(params); success = true; } finally { if (!success) { localDevice.removeConnection(c); } } return c.getHandle(); }