Android的蓝牙聊天的示例应用程序 - 多个连接(Android Bluetooth Chat

2019-06-25 09:47发布

是否有可能设置Android蓝牙聊天的示例应用程序在一次连接一个以上的人,有一个小型的聊天室? 什么会那意味着什么?

Answer 1:

TL;博士版本:蓝牙很烂此,不使用它,用wifi相反,这可能是通过网络后台支持。

我在一个社交无线网络研究项目的利益,这些年来彻底调查这个问题。 我一般建议是:它不会超过两/三个人的工作。 蓝牙只是没有设计有无线对记等网络。

在一般情况下,它似乎是便宜的蓝牙控制器包括在Android设备上( 尤其是 HTC的设备,IIRC)真的不处理在任何时间超过两个或三个连接。 我不确定这是否是硬件或固件问题,但我可以讲述一些基本的轶事。 我正在努力实现这个想法在SDK水平(即无固件修改)在2011年的开始,而能得到同行获得两个额外的连接(即,三个设备,每个连接到其他二)一段几分钟到一个小时的连接前工作会突然死去和插座将无法使用,需要重新连接。 不幸的是,20分钟的上限,且通常是不可能在所有可靠地到达多于一个的其它设备的连接。

该项目的目标是支持多人默默在后台相互交融,但从来没有实现过,而不是我们抛弃了蓝牙和带wifi去代替,其中很多工作好得多。 在抽象的,我觉得人查看蓝牙作为可靠的点对点通信的可能的媒介,但它是不是真的这样设计的:它更适用于小型设备(思耳机)之间的短距离通信的媒介。

请注意,如果你想这样做,设备,你可以连接的最大数目是固定的,因为按照蓝牙规范,一个微微网最多支持七个设备。 (参见维基百科的文章。)

所需的改变很简单:你使用不同的 UUID为每个设备。 这可以实现多种方式,使用带外交流机制,或简单的方案,你在越来越时尚分配的UUID和连接到网络时,每个尝试连续。

下面是一些有关谷歌组线程:

  • 蓝牙点对点网络
  • 在Android蓝牙的多重连接

我记得发布更详尽的细节一个如何做到这一点(有代码),我可能会挖出以及..,如果我能找到它。 它应该是从2010年年底或2011年初。

因此,答案是,在抽象的,是的,你可以尝试这样做,通过使用多个的UUID(使用一个后,就是这样,你必须尝试另一种使用一些分配协议)。 然而,在实践中,大量的试验和错误后,这并不能真正对你可能想用它来工作,这是一个很大更好地与互联网后端去代替。 顺便说一句,这也是很好的另一个原因是,大多数用户真的不喜欢打开他们的蓝牙,生怕自己的电池被抽干..



Answer 2:

这里离开这一点,在情况下,它可以帮助其他人。

我能够做以下我的自定义聊天室官方蓝牙教程和修改了一点。 不幸的是,我不能提供我的大部分代码,但主要思路是:

每台设备都同时充当服务器和客户端。 当聊天开始,设备开始它的服务器线程。 服务器线程是一样的,但是官方并没有结束时接受连接。 它只是继续听。

客户端线程是在教程完全相同。

服务器和客户端线程管理连接相同。 我创建分离的线程用于接受消息以下这个教程和一个用于发送它们。

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);
}    

现在,在主要活动总是当用户点击发送按钮,每个工人(发送线程)将消息发送到远程设备。 听力是异步运行。

重要:

  1. 您需要在消息发送失败,并删除发送和recieving线程设备时,你发现它disconected来处理异常。 在我来说,我用众所周知的UUID“00001101-0000-1000-8000-00805f9b34fb”。 对于每一个设备。
  2. 你需要等待atempts在3秒到连接的客户端,因为一些设备具有弱蓝牙硬件,并拒绝连接的客户端。


Answer 3:

BT连接是支持高达7个-10连接。 所以,你会在这个范围内进行限制。 我认为它是专为主要设备的扩展,而不是随机交际

来源:在谷歌搜索“蓝牙编程”



文章来源: Android Bluetooth Chat sample app - multiple connections