Найти UUID, используемый для сокета BT - PullRequest
0 голосов
/ 01 марта 2012

Я подключаю несколько устройств к серверному устройству через BT.У меня есть несколько идентификаторов UUID для подключения.

Однако иногда устройство отключается, и мне нужно сделать сервер доступным для обнаружения и использовать тот же UUID, который изначально использовалось устройством.Таким образом, я могу быть уверен, что этот UUID доступен.

Есть ли способ узнать, какой UUID использовался для подключения к устройству?

1 Ответ

0 голосов
/ 17 апреля 2012

Я понимаю вашу проблему, но боюсь, что Android SDK не предоставляет метод для получения внутреннего UUID, связанного с BluetoothSocket, хотя, если вы видите в исходном коде Android, BluetoothSocket знает связанный UUID.

Вы можете создать несколько BluetoothServerSockets для прослушивания различных UUID.Все, что вам нужно, это просто не потерять связь между BluetoothSockets, созданными вызовом accept () для данного BluetoothServerSocket.Поскольку, когда вы создали 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 с BluetoothSockets, принятыми для данного ServerSocket.


Просто вызывайте эту ветку каждый раз, когда у вас есть другой UUID, с которым вы хотите получать соединения.

Надеюсь, это помогло ^^ '

...