I am using the Android Bluetooth Chat Sample, and I was wondering how and 
where I should add codes to able to connect to multiple devices?

On Wednesday, December 22, 2010 8:57:53 PM UTC-6, Kristopher Micinski wrote:
>
> 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

Reply via email to