附近连接 2.0:混合不同策略?

2024-04-25

我一直在尝试新的安卓 附近连接 v2.0 https://android-developers.googleblog.com/2017/07/announcing-nearby-connections-20-fully.htmlAPI,并对用于广告和发现的连接策略有一些疑问。这些问题涉及奇怪的边缘情况,可能不容易回答。但是,当我在另一篇文章的评论中提到这些潜在问题时,附近连接开发人员要求我创建一个关于这些问题的单独问题。这个问题涉及我想到的一些奇怪(但有些不自然)的边缘情况(但普通开发人员做普通事情不太可能遇到)。

文档 https://developers.google.com/nearby/connections/strategies包含这个稍微含糊的声明:“Nearby Connections 支持不同的广告和发现策略。”最初,我将此解释为我们可以选择两种可用连接策略之一,并将其​​用于广告和发现。由于连接策略定义了特定节点处的(本地)连接拓扑,因此我们需要使用相同的连接策略来进行广告和发现是有意义的。

然而,人们也可以将这一含糊不清的陈述解释为人们可以(字面意思)使用不同的广告和发现策略。这看起来很荒谬,但似乎没有任何机制可以真正强制策略相同。由于 startAdvertising() 和 startDiscovery() 都采用“策略”参数,因此很可能向每个参数传递不同的策略。

注意:我已经通过实验找到了上述问题的答案。如果广告商和发现者使用不匹配的策略,发现者的onEndpointFound回调永远不会到达(所以我猜测较低级别的代码必须意识到存在不匹配并且永远不会将其发送出去)。

另一个问题:异构网络(混合策略)是否可能?由于连接策略影响两个连接节点之间使用的通信方式(P2P_CLUSTER使用低带宽进行小数据传输,以及P2P_STAR同时使用蓝牙和 Wifi 热点以获得更高的带宽),似乎为了两个节点进行连接,两者都需要使用相同的策略。

如前所述,实验表明两个节点确实需要使用相同的策略才能进行连接。但是,我可以想象另一种边缘情况,其中设备 A 使用“集群”策略连接到设备 B,切换策略(同时保持连接打开),并使用“星型”策略连接到设备 C。这行得通吗?我不知道。由于我当前的测试程序在配置更改后重新启动,因此我需要编写新代码来测试这种边缘情况(并且我还有很多我宁愿编写的其他代码)。但附近连接开发人员有兴趣了解潜在的边缘情况,所以我在这里提到这一点。

当我尝试调试其他连接问题时出现了这些问题。为了使我的实验程序更加通用,我添加了一个用于连接策略的“设置”选项,以及另一个控制程序是否应该仅进行广告、或仅进行发现或两者兼而有之的“设置”选项。然后我必须决定当这些设置发生变化时会发生什么。

停止广告/发现然后使用请求的策略重新启动指定的内容是否就足够了?但是,先前策略中剩余的现有连接会发生什么情况呢?这个答案似乎并不明显。

也许这些问题只会出现在像我的测试程序这样的人为场景中(我编写该程序只是因为我试图理解其他连接问题)。在最终产品中,我可能只会选择一种策略并始终如一地使用它。如果附近的连接是开源的,我只需查看该代码即可了解在这些奇怪的边缘情况下可能会发生什么。但由于我无法查看源代码,因此很高兴看到更多有关预期行为的文档


是的,你回答了你自己的问题。您必须匹配广告商和发现者双方的策略。否则,您将永远不会发现广告设备。

至于在流程中间切换策略,这是明确不允许的。当您开始广告/开始发现而您仍然与之前的策略有联系时,您会收到错误消息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

附近连接 2.0:混合不同策略? 的相关文章

随机推荐