找到用于BT套接字的UUID

时间:2012-03-01 16:28:19

标签: android bluetooth uuid

我通过BT将多个设备连接到服务器设备。 我有许多UUID,以便能够连接。

但是,有时设备会断开连接,我需要使服务器可被发现并使用设备最初使用的相同UUID。这样我可以确定UUID可用。

有没有办法知道UUID用于连接设备的是什么?

1 个答案:

答案 0 :(得分:0)

我理解您的问题,但我担心Android SDK不会公开一种方法来获取与BluetoothSocket关联的内部UUID,如果您在Android源代码中看到,则BluetoothSocket知道相关的UUID。

您可以创建多个听取不同UUID的BluetoothServerSockets。你想要的只是不放弃在给定的BluetoothServerSocket上通过accept()调用创建的BluetoothSockets之间的关联。因为在您创建ServerSocket时,您知道UUID。

public class IncommingConnectionsForAGivenUUID extends Thread
{
   private BluetoothServerSocket serverSocket;
   private UUID serviceUUID;
   private boolean isRunning;

   public IncommingConnectionsForAGivenUUID(BluetoothAdapter btAdapter, UUID serviceUUID) throws IOException
   {
      this.serverSocket = btAdapter.listenUsingRfcommWithServiceRecord("localBtName", serviceUUID);
      this.serviceUUID = serviceUUID;
   }

   @Override
   public void run()
   {
      this.isRunning = true;

      while(this.isRunning)
      {
         BluetoothSocket socket = this.serverSocket.accept();

         // do something with the socket...

         // this socket will have the UUID passed in 
         // the constructor. So in this point you can associate
         // this socket with the serviceUUID variable without
         // having to call a method from the BluetoothSocket
      }
   }
}

好的,这不是唯一的解决方案,但是如果您想将UUID与给定ServerSocket接受的BluetoothSockets相关联,它可能是一种解决方案。


每次有另一个希望接收连接的UUID时,只需调用此线程。

希望它能帮助^^'