是否可以设置Android蓝牙聊天示例应用,以便一次连接多个人,并拥有迷你聊天室?这会带来什么?
答案 0 :(得分:8)
tl;博士版:蓝牙很糟糕,不要使用它,而是使用wifi,可能是由网络后端支持。
为了社交无线网络研究项目的利益,我多年来彻底调查了这个问题。我的一般建议是:它不适用于超过两个/三个人。蓝牙的设计并非考虑到无线对等网络。
一般来说,Android设备(特别是 HTC的设备,iirc)中包含的廉价蓝牙控制器似乎并不能真正处理超过两个或三个连接。我不确定这是硬件还是固件问题,但我可以讲述一些基本的轶事。我正在努力在2011年初在SDK级别(即没有固件修改)实现这个想法,并且能够让对等方获得两个额外的连接(即,三个设备,每个连接到另外两个)到在连接突然死亡之前工作几分钟到一个小时,插座将变得无法使用,需要重新连接。不幸的是,20分钟是一个上限,通常不可能完全连接到一个其他设备。
该项目的目标是支持多个人在后台默默地互相交流,但这从未实现过,相反,我们放弃了蓝牙,转而使用wifi,其效果更好 。在摘要中,我认为人们将蓝牙视为可靠的对等通信的可能媒介,但实际上并没有这样设计:它更像是用于小型设备之间短距离通信的媒介(想想耳机)。
请注意,如果要执行此操作,可以连接的最大设备数量是固定的,因为根据蓝牙规范,微微网最多支持七个设备。 (See the wikipedia article.)
所需的更改很简单:您为每个设备使用不同的 UUID。这可以通过多种方式实现,使用带外交换机制,或者以增加的方式分配UUID的简单方案,以及连接到网络时,连续尝试。
以下是一些相关的Google群组主题:
我记得发布了一篇更详细的文章,详细介绍了如何做到这一点(带代码)我也可以挖掘......如果我能找到的话。应该是从2010年底或2011年初开始。
所以答案是,在摘要中,是的,您可以尝试来执行此操作,方法是使用多个UUID(在使用之后,就是这样,你必须使用一些任务尝试另一个)协议)。然而,在实践中,经过大量的试验和错误后,这并不适用于你可能想要使用它的东西,并且它更适合用于互联网后端的很多。顺便说一句,这也是另一个原因,大多数用户并不喜欢打开他们的蓝牙,因为他们担心电池耗尽。
答案 1 :(得分:3)
离开这里,万一它可以帮助别人。
我能够在official bluetooth tutorial之后创建自定义聊天室并对其进行一些修改。 不幸的是,我无法提供大部分代码,但主要的想法是:
每台设备都充当服务器和客户端。启动聊天时,设备启动其服务器线程。服务器线程与官方线程相同,但在接受连接时不会结束。它只是继续倾听。
客户端线程与教程中的相同。
服务器和客户端线程都管理连接相同。我创建了用于接受消息following this tutorial的分离线程和用于发送消息的线程。
private void manageConnectedSocket(BluetoothSocket socket) {
//create thread responsible for sending messages.
SendingThread w = new SendingThread(socket);
MainActivity.addSendingThread(w);
//Creates listener for messages to accept.
MainActivity.addListener(socket);
}
现在主要活动总是在用户点击发送按钮时,为每个工作人员(发送线程)发送消息到远程设备。听力是异步运行的。
重要:
答案 2 :(得分:0)
Bt连接最多支持7-10个连接。因此,您将受限于该范围。我认为它是为主要设备的扩展而设计的,而不是用于随机通信
来源:搜索"蓝牙编程"在谷歌上