Android蓝牙API连接到多个设备
是的,您可以设置多个蓝牙连接(至少是RFCOMM连接)。只需使用其他线程的给你连接,它会正常工作(我猜) 参见:http://developer.android.com/resources/samples/BluetoothChat/index.html
编辑,评论布局是不可读: 在connectThread功能,更改:
tmp = device.createRfcommSocketToServiceRecord(MY_UUID);
到:
Method m = device.getClass().getMethod("createRfcommSocket", new Class[] {int.class});
tmp = (BluetoothSocket) m.invoke(device, 1);
像巴里说的,你可以连接到多个设备。只需为每个连接创建一个新线程。你需要列出你正在跟踪的'ConnectThread'和'ConnectedThread'。所以你只需要适应多线程(当然,实现选择多个设备的能力)。 我已经这样做了,并不太难。
如果你想连接到一个设备,然后连接到另一个(使用原始菜单一个接一个),那么你可能还有更多的工作要做。
为了建立一个多连接,你必须为你想连接的每一个设备制作单独的线程。每个线程都有分开的方法来读取和写入数据到远程设备。
看到此链接
我要说的是,代码是没有问题的。正确的实施方式是管理每个连接的线程,但是我发现您可以同时连接的设备数量基于手机的蓝牙实施而受到限制。蓝牙规格状态7个设备可以连接,但是我发现Android手机只能处理1个蓝牙连接,而其他人可以处理6个。如果Android开发团队的成员可以在这里深入了解,它将确实有助于蓝牙开发社区。
我只是浪费了很多时间才发现Nexus 7只能连接1个BT设备,但Nexus 10可以连接多个同步设备。 – BitBank 2012-12-18 07:03:25
严重的是,我在Nexus 7上做了这样的工作也浪费了时间...... – 2014-07-24 08:14:07
@SalmanKhakwani,你是怎么知道有多少BT设备可以连接到Nexus 7的? – ymerdrengene 2018-02-07 15:56:05
这个样品不能连接多个设备,当我尝试连接的第三装置,它将打印IO异常:服务discoery – user545755 2010-12-17 12:57:07
嗯,和当您尝试更改时: tmp = device.createRfcommSocketToServiceRecord(MY_UUID); 收件人: 方法m = device.getClass()。getMethod(“createRfcommSocket”,new Class [] {int.class}); tmp =(BluetoothSocket)m.invoke(device,1); (使用正确的尝试/捕获) 你还会得到那个错误吗? (请参阅答案的可读代码..) – Barryvdh 2010-12-17 13:33:16
感谢您的帮助,但它会打印此异常: – user545755 2010-12-17 16:04:03