Android蓝牙API连接多个设备

14

我们是否可以连接多个设备?谁能为我分享代码!这个问题困扰了我很长时间!谢谢!

5个回答

6

我认为代码并不是问题。正确的实现方式是为每个连接管理一个线程,但是我发现可以同时连接的设备数量受手机蓝牙实现的限制。蓝牙规范说明最多可以连接7个设备,但我发现有些安卓手机只能处理1个蓝牙连接,而另一些则可以处理6个。如果安卓开发团队的某位成员能在这里提供更深入的解释,这将对蓝牙开发社区非常有帮助。


4
我刚刚浪费了很多时间才发现Nexus 7只能连接1个蓝牙设备,但是Nexus 10可以同时连接多个设备。 - BitBank
1
@SalmanKhakwani,你是怎么发现有多少个蓝牙设备可以连接到你的Nexus 7的? - ymerdrengene
1
您可以检查设备中使用的蓝牙硬件。您还可以检查其支持的同时连接数量。 - Salman Khakwani

4
是的,你可以建立多个蓝牙连接(至少RFCOMM连接)。只需为您的连接使用一个替代线程即可,它应该可以正常工作(我猜)请参见:http://developer.android.com/resources/samples/BluetoothChat/index.html 编辑,注释布局不可读: 在connectThread函数中,更改:
tmp = device.createRfcommSocketToServiceRecord(MY_UUID);

to:

Method m = device.getClass().getMethod("createRfcommSocket", new Class[] {int.class});
tmp = (BluetoothSocket) m.invoke(device, 1);

此示例无法连接多个设备,当我尝试连接第三个设备时,它会打印io异常:服务发现。 - user545755
嗯,当您尝试更改以下内容时: tmp = device.createRfcommSocketToServiceRecord(MY_UUID); 为: Method m = device.getClass().getMethod("createRfcommSocket", new Class[] {int.class}); tmp = (BluetoothSocket) m.invoke(device, 1); (带有正确的try/catch) 您是否仍然遇到该错误? (请参见答案以获取可读代码...) - Barryvdh
java.io.IOException: 软件导致连接中止。 - user545755

3

如果要连接多个设备到蓝牙服务器套接字,可以尝试使用这个


0

就像Barry所说的那样,您可以连接多个设备。只需为每个连接创建一个新线程。您需要有一个“ConnectThread”和“ConnectedThread”的列表来跟踪它们。因此,您只需要为多个线程进行适应(当然还要实现选择多个设备的能力)。 我已经做到了,而且并不太难。

如果您想连接到一个设备,然后连接到另一个设备(使用原始菜单逐个连接),那么您可能需要做更多的工作。


0

要建立多个连接,您需要为每个想要连接的设备创建单独的线程。每个线程都有单独的方法用于读取和写入远程设备数据。

查看此链接

Android蓝牙多连接问题?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接