Many people have this problem, this implements a Bluetooth Piconet, this is why this is using seven different UUIDs for the Bluetooth socket. I went through this example and saw how it is implemented, it is similar to how we implement this client/server functionality in a few of our applications in our research. I believe the key to getting this to work is inthe mUuid list.
Take a close look at what this is doing? for (int i = 0; i < Connection.MAX_SUPPORTED && myBSock == null; i++) { for (int j = 0; j < 3 && myBSock == null; j++) { myBSock = getConnectedSocket(myBtServer, mUuid.get(i)); if (myBSock == null) { try { Thread.sleep(200); } catch (InterruptedException e) { Log.e(TAG, "InterruptedException in connect", e); } } } } What this code does is looks to connect to the device, but how does it do so? It tries the socket multiple times, using multiple UUIDs for the session. In essence it means that we can use UUID only *once*. So instead this application implements using seven UUIDs, then the server listens and accepts each UUID on the server side, this is what is done with the following code: for (int i = 0; i < Connection.MAX_SUPPORTED && maxConnections > 0; i++) { BluetoothServerSocket myServerSocket = mBtAdapter .listenUsingRfcommWithServiceRecord(srcApp, mUuid.get(i)); BluetoothSocket myBSock = myServerSocket.accept(); myServerSocket.close(); // Close the socket now that the // connection has been made. String address = myBSock.getRemoteDevice().getAddress(); mBtSockets.put(address, myBSock); mBtDeviceAddresses.add(address); Thread mBtStreamWatcherThread = new Thread(new BtStreamWatcher(address)); mBtStreamWatcherThread.start(); mBtStreamWatcherThreads.put(address, mBtStreamWatcherThread); maxConnections = maxConnections - 1; if (mCallback != null) { mCallback.incomingConnection(address); } } Now, on the client side of things what is done? The client does not know how many active connections the server currently has. If we have some agreed upon order that the clients must use we can simply use this, however, in our case, we simply just try *each UUID* in sequence until we "find the right one." Hopefully this helps you, and everyone else who has questions about this problem, feel free to email me with problems you have. Short version: -- Use multiple UUIDs, you can only use one at once. So define seven (max for piconet usage) and try each one until you find the right one. Thanks, Kristopher Micinski Michigan State University 2010/12/22 苗鹏 <mp870...@gmail.com> > > I looked at the FBTClickLinkCompete'source, > for (int i = 0; i < Connection.MAX_SUPPORTED && myBSock == null; i++) { > for (int j = 0; j < 3 && myBSock == null; j++) { > myBSock = getConnectedSocket(myBtServer, mUuid.get(i)); > if (myBSock == null) { > try { > Thread.sleep(200); > } catch (InterruptedException e) { > Log.e(TAG, "InterruptedException in connect", e); > } > } > } > } > This code fragment shows a client that trys to connect the server... The > sample of SDK(BluetoothChat) used same code except > for (int i = 0; i < Connection.MAX_SUPPORTED && myBSock == null; i++) { > for (int j = 0; j < 3 && myBSock == null; j++) { .... > I don't understand why? what'more, it can't connect to multiple devices at > the same time! > Thanks!!! > > > > > > > > > > > > > > > > 2010/12/21 Morrison Chang <morrison.ch...@gmail.com> >> >> Look at http://code.google.com/p/apps-for-android/ >> Specifically the code for BTClickLinkCompete for a sample of Bluetooth >> connectivity. >> http://code.google.com/p/apps-for-android/source/browse/#svn%2Ftrunk%2FBTClickLinkCompete >> >> I think the air hockey sample supports 4 other devices along with the >> server device. >> >> -Morrison >> >> On Dec 20, 3:37 am, 苗鹏 <mp870...@gmail.com> wrote: >> > could you share me your code?Thanks! >> > >> > 2010/12/20 James <030440...@163.com> >> > >> > >> > >> > >> > >> > >> > >> > > of course you can, >> > >> > > On Dec 18, 9:25 am, 苗鹏 <mp870...@gmail.com> wrote: >> > > > It is possible to connect simultaneously to multiple bluetooth devices? >> > >> > > -- >> > > You received this message because you are subscribed to the Google >> > > Groups "Android Developers" group. >> > > To post to this group, send email to android-developers@googlegroups.com >> > > To unsubscribe from this group, send email to >> > > android-developers+unsubscr...@googlegroups.com<android-developers%2Bunsubs >> > > cr...@googlegroups.com> >> > > For more options, visit this group at >> > >http://groups.google.com/group/android-developers?hl=en >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Android Developers" group. >> To post to this group, send email to android-developers@googlegroups.com >> To unsubscribe from this group, send email to >> android-developers+unsubscr...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/android-developers?hl=en > > -- > You received this message because you are subscribed to the Google > Groups "Android Developers" group. > To post to this group, send email to android-developers@googlegroups.com > To unsubscribe from this group, send email to > android-developers+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/android-developers?hl=en -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en