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;
 }