我想使用Android蓝牙建立群聊。现在我正在尝试将消息从一个设备发送到多个设备并从多个设备接收消息。
我的方法是首先创建一个BluetoothServerSocket:
mBluetoothAdapter.listenUsingInsecureRfcommWithServiceRecord(mBluetoothAdapter.getName(), uuid);
客户端将尝试使用此uuid进行连接。连接后,我会这样做:
try {
socket = mmServerSocket.accept();
System.out.println("1");
} catch (IOException e) {
System.out.println("Exception 1");
break;
}
System.out.println("2");
// If a connection was accepted
if (socket != null) {
ConnectedThread connectedThread = new ConnectedThread(socket);
connectedThread.start();
// Notify that this uuid is used
mHandler.obtainMessage(SOCKET_ACCEPTED, serverUUID).sendToTarget();
}
try {
mmServerSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
基本上我从客户端获取套接字并传递给另一个线程进行通信。然后我关闭服务器套接字并重新创建一个。在处理程序中,我将再次运行此线程并列出到另一个客户端。
对于客户端,我只是进行正常连接并且HashMap
保持<Device, Thread>
关系。
我在三台设备上测试了这种机制,他们可以向其他两台设备发送消息,并从其他两台设备接收消息。
以下是我的问题:
据我所知,有些人说有多个连接我需要使用不同的UUID,但我的机制只需要一个并且有效。有人可以解释一下吗?
由于我只使用一个UUID,但蓝牙规范只允许同时连接7个设备。因此,如果一个设备连接到7个设备,而另一个设备尝试连接,会发生什么? (我手边没有那么多设备,所以无法测试它)
我的解决方案有任何潜在的问题吗?