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

问题描述 投票:0回答:2

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

我已经浏览了 google 关于剪刀石头布和对讲机的示例代码

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

我想构建一个教师和学生应用程序,教师可以在该应用程序中宣传并发现学生,并随着教室设置中更多设备的连接而同时向每个连接的设备发送有效负载。

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

android google-nearby
2个回答
6
投票

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

如果是专门为了出席,那么就不需要建立连接。您可以让每台设备进行广告,同时一台设备不断进行扫描。这样您就可以快速建立设备列表。

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

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

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

0
投票

如果附近支持Wifi Aware,这可以满足您的要求,像网状网络一样连接,不需要互联网。我看到附近已经在最新更新中考虑了 Wifi Aware。

© www.soinside.com 2019 - 2024. All rights reserved.