能够使用附近的连接同时向多个设备发送消息/字节

Job*_*b M 1 android google-nearby

为了试用附近的API,我决定构建一个应用程序,让老师可以跟踪学生在课堂上的出勤情况。类似于Caren Chang正在做的事情。

我已经浏览了关于 Rockpaperscissors 和对讲机谷歌示例代码

但是当我使用 4 部手机测试样本时,似乎任何时候都只有一个设备连接。

我想构建一个教师和学生应用程序,当更多设备在教室设置中连接时,教师会宣传和发现学生,同时向每个连接的设备发送有效载荷。

我如何使用附近的 api 同时连接和发送数据到新设备和多个设备?

Xly*_*the 5

这是一个很好的用例,也是我们过去讨论过的用例。

如果是专门为了出席,那么你就不需要建立联系。您可以在一台设备不断扫描的同时让每台设备做广告。您将通过这种方式快速建立设备列表。

但是,如果您想做的不仅仅是出勤,例如将作业推送到每个人的设备,则需要构建一个网格。首先,您需要使用 Strategy.P2P_CLUSTER。我们在 Nearby Connections 中有 3 种可用的策略(CLUSTER、STAR、POINT_TO_POINT),集群是最通用的一种。使用集群,您可以根据需要连接到任意数量的设备,并且可以从任意数量的设备接收传入连接。或者,几乎......手机内的蓝牙无线电很弱,一次只能保持3~4个连接。

为了能够连接所有约 30 个设备,我建议形成一个“蛇形”连接。设备的头部和尾部将同时扫描和做广告(没有连接到任何人的设备被认为是长度为 1 的蛇)。头部和尾部将继续相互连接(确保不连接到自身*),并且您很快就会拥有一长串连接,将每个人连接在一起。从那里,您可以沿链向下转发消息,以确保每个人都能收到。

  • 为避免连接到自己,您可以为每个设备分配一个随机数(例如 1、4、8、10),然后每个设备尝试连接到下一个最大的数字,或者您可以在连接和断开连接时广播一条消息,如果您得到回声(因为广播转了一圈)。

  • 大家好,最后我制作了一个演示应用程序,它遵循“蛇形”连接。这是 repo 的链接:https://github.com/nSpider/NearbyConnectionMeshNetwork。注意:源代码没有很好的注释或组织。随意看看和批评。:P 希望有帮助 (3认同)