使用谷歌附近连接的多对等连接



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

我在过去两天测试了Google附近连接,我遇到了一些问题,问题。

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

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

以下是我的问题:

  • 摩托罗拉设备要求输入配对代码以将一个连接到另一个,但即使接受配对,它们也不会连接。
  • 某些设备连接完美(OnePlus和Nexus(,但摩托罗拉在连接时出现问题,经常抛出此错误:STATUS_BLUETOOTH_ERROR
  • 是否可以创建一个网格应用程序,将消息从设备转发到设备?通过我所做的测试,我开始怀疑这是否真的可行。
  • 在我的测试过程中,我经常同时发现和做广告。有没有更好的方法来避免问题?

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

非常感谢帮助你们!

救灾援助应用程序实际上在我们的团队中被谈论了很多,作为一个非常有趣的用例。我在附近工作,这个团队建立(和维护(附近连接。一旦你知道了限制,这绝对是可行的。

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

PS:您可以查看我的帖子历史记录以获取有关附近连接的更深入信息。 PPS:将来,将堆栈溢出的问题分解为更小、更尖锐的问题。它对将来搜索的人更有帮助。

最新更新