使用 Google 附近连接的多对等连接

Multi peer connection using Google Nearby Connection

我正在写我的学士论文,我必须使用 Google 附近的连接 API 来实现一个应用程序。目标是开发灾难援助应用程序。

我在过去两天测试了Google Nearby Connection,但我遇到了一些问题,问题。

我有 6 台设备,4 台摩托罗拉 G(第 2 代)、1 台 Nexus 5X 和 1 台 OnePlus 5T。它们都是最新的。我也用最新版的Google附近

'com.google.android.gms:play-services-nearby:15.0.1'

这是我的问题:

我使用了 google 的文档和我在网上找到的其他一些资源。 这是我最后的代码:Gist Link

非常感谢大家的帮助!

灾难援助应用程序实际上在我们的团队中被讨论了很多,作为一个非常有趣的用例。我在 Nearby 工作,该团队构建(和维护)Nearby Connections。这绝对是可行的,一旦你知道了限制。

  • 我相信摩托罗拉错误已在我们的内部版本中得到修复,因此请在接下来的几个月中留意它。更新将在 1.5~2 个月内推送到所有设备(您不需要更新您的应用程序)。希望我们能更快地推动它,但事实就是如此。不过,如果配对对话框被接受,他们应该正在连接。如果这不起作用,很遗憾,我没有解决方法。
  • 我们发现切换蓝牙是避开 STATUS_BLUETOOTH_ERROR 的最佳方式,因为收音机可能会进入不良状态(尤其是 Android 版本早于 N...是......很多Android版本......)。我们尽最大努力半频繁切换,在应用程序停止使用附近连接后切换无线电,但有时这还不够。在极端情况下,phone 可能需要重新启动。此错误也可以自行消失,也可以通过在连接前停止发现来稍微缓解。
  • 是的,网格绝对是可能的。对于始终连接的网格,您需要使用 P2P_CLUSTER。尽量让每个设备保持 3~4 个同时连接(并有某种逻辑来避免形成孤岛)。连接设备后,您将需要构建一个协议来发送消息,使网络泛滥以进行广播或希望在节点之间发送定向消息。我见过的解决这个问题的其他方法是使用 advertise / discovery 来异步传输短信息,或者设置一个计时器(例如:每小时一次,每个人扫描并尝试连接以交换数据,然后快速断开连接),或形成一个 'snake-like' 连接,其中每个人最多连接到 2 个设备并形成一长串连接。
  • 广告通常是轻量级的,但在广播中发现却很难。我们会在您连接时在内部将其关闭,但我们会在连接期间将其重新打开。这可能导致不稳定的连接。如果可以,请尝试将发现限制在短时间内。

PS:您可以查看我的 post 历史记录以获取有关 Nearby Connections 的更多深入信息。 PPS:将来,将你的堆栈溢出问题分解成更小、更尖锐的问题。对以后搜索的人更有帮助。