This is a common scenario. Following is the way to go about it.
This will attempt to join a room with one player inside it.
If its successful, great - you are done.
If its unsuccessful, then the client should create a new room for 2 players and join it. So
createRoom("", "", 2);
The response is in the zonerequestlistener
You will get the room id in this - you can then join this room (newly created) using joinRoom(roomId) and wait for the next player to come.
So in your example - player 1 will create a room (joinRoomInRange will fail for it as no room exists), join it and wait. player 2 will join that room (joinRoomInRange is success).
player 3 will create a room (joinRoomInRange will fail as no room with 1 player exists), join it and wait.
player 4 will join that room (joinRoomInRange is success).