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

时间:2018-07-04 16:38:35

标签: android google-nearby mesh-network ad-hoc-network

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

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

我有6台设备,其中4台是Motorola G(第二代),1台Nexus 5X和1台OnePlus 5T。他们都是最新的。我也使用最新版本的Google附近

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

这是我的问题:

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

我使用了Google的文档以及在网上找到的其他一些资源。 这是我结尾处的代码:Gist Link

非常感谢帮助人员!

1 个答案:

答案 0 :(得分:0)

作为一个非常有趣的用例,我们团队中实际上已经讨论了很多灾难援助应用程序。我在“附近”工作,该团队建立(并维护)“附近的连接”。一旦知道了局限性,那绝对是可行的。

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

PS:您可以查看我的帖子历史记录,以获取有关“附近连接”的更多详细信息。 PPS:将来,将堆栈溢出问题分解为更小,更尖锐的问题。对于将来搜索的人更有用。