我通过BT将多个设备连接到服务器设备。 我有许多UUID,以便能够连接。
但是,有时设备会断开连接,我需要使服务器可被发现并使用设备最初使用的相同UUID。这样我可以确定UUID可用。
有没有办法知道UUID用于连接设备的是什么?
答案 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时,只需调用此线程。
希望它能帮助^^'