使用 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'
这是我的问题:
- 摩托罗拉设备需要配对代码才能相互连接,但即使配对被接受,它们也不会连接。
- 某些设备连接完美(OnePlus 和 Nexus),但摩托罗拉连接有问题,经常抛出此错误:STATUS_BLUETOOTH_ERROR
- 是否可以创建一个将消息从设备转发到设备的网状应用程序?通过我所做的测试,我开始怀疑这是否真的可行。
- 在我的测试过程中,我经常同时发现和做广告。有没有更好的方法可以避免问题?
我使用了 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:将来,将你的堆栈溢出问题分解成更小、更尖锐的问题。对以后搜索的人更有帮助。
我正在写我的学士论文,我必须使用 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'
这是我的问题:
- 摩托罗拉设备需要配对代码才能相互连接,但即使配对被接受,它们也不会连接。
- 某些设备连接完美(OnePlus 和 Nexus),但摩托罗拉连接有问题,经常抛出此错误:STATUS_BLUETOOTH_ERROR
- 是否可以创建一个将消息从设备转发到设备的网状应用程序?通过我所做的测试,我开始怀疑这是否真的可行。
- 在我的测试过程中,我经常同时发现和做广告。有没有更好的方法可以避免问题?
我使用了 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:将来,将你的堆栈溢出问题分解成更小、更尖锐的问题。对以后搜索的人更有帮助。