您可以在Android中的相同两个设备之间建立多个蓝牙连接吗?

时间:2012-03-23 04:33:18

标签: android bluetooth bluecove

我有两个Android设备。一个充当服务器,另一个充当客户端。客户端连接到服务器并请求文件 - 这是在客户端上的一个线程和服务器上的一个线程上完成的,这样两者都可以继续执行他们想要的操作。

然后,客户端再次尝试连接到服务器以请求另一个文件。现在我在尝试连接时遇到java.io.IOException: Device or resource busysocket.connect())。是因为蓝牙(在Android上)只允许两个设备之间的一个通道? (如果它是另一个设备它会工作,但如果它是相同的,它不会?)请注意,两个尝试都使用相同的服务名称和UUID。

即使错误特定于我的代码,我也想知道是否是这种情况。

系统: android 2.2.1与bluecove蓝牙库进行通信。

2 个答案:

答案 0 :(得分:6)

绝对不能使用相同的UUID(通用UNIQUE标识符)。

参考资料来自here

也许不止一个。您可以使用服务器/客户端样式连接多个设备,您可以尝试将其中一个设备设置为服务器,并在另一个设备上启动多个客户端。我的第一个猜测是启动几个客户端线程,但您可能必须找到一种方法来更改每个线程的MAC地址。

Here您可以找到有关如何更改Mac地址的其他讨论,但仅适用于有根设备。对于没有根的人,我找不到任何其他东西。不知道如何以编程方式执行此操作,但它可能会给你一个开始。

Here讨论了如何在服务器中同时连接多个客户端。我从this question到达那里。 (我想这可能是你最近的一次拍摄)

Here您讨论了点对点网络。

答案 1 :(得分:1)

AFAIK,蓝牙连接时无法实现多重连接。蓝牙连接API默认为同步,因此一次只能连接一个连接。所以你不能执行多个连接。

然而,可以通过另一种方式实现,例如建立一个连接,对其执行2秒操作,然后创建另一个连接并执行2秒操作,就像在正常的多任务操作系统中一样。