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

0 android mesh-network google-nearby ad-hoc-network

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

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

我有 6 台设备,4 台 Motorola G(第 2 代)、1 台 Nexus 5X 和 1 台 OnePlus 5T。它们都是最新的。我还使用最新版本的 Google 附近

'com.google.android.gms:play-services-nearby:15.0.1'
Run Code Online (Sandbox Code Playgroud)

这是我的问题:

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

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

非常感谢大家的帮助!

Xly*_*the 6

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

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

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