0

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

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

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

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

以下是我的问题:

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

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

非常感谢各位的帮助!

4

1 回答 1

6

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

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

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

于 2018-07-06T02:15:41.743 回答