附近连接 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:混合不同策略? 的相关文章

  • Android STFP 库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在我的 Android 项目中使用 SFTP 安卓已经有了吗 SFTP 库 还是我必须实现它 I
  • 在Android中将半径边框绘制到imageview或textview的一个角落

    我需要在我的应用程序中为图像视图或文本视图绘制边框 但我只需要在一个角落绘制它 就像图像一样 我做了一个形状 但我在所有 4 个边上都有边框
  • Android:如何从输入流创建 9patch 图像?

    我使用下面的代码实例化 9patch 图像并将其设置为按钮的背景 下图显示了不理想的结果 InputStream MyClass class getResourceAsStream images btn default normal 9 p
  • 如何更改对话框的默认黑色暗淡背景“颜色”(而不是暗淡量)?

    这是随机显示的图像Dialog在网上找到的 我一直在实施一个自定义Dialog 我可以处理对话框上的几乎所有内容 除了对话框本身下方的默认黑色昏暗背景之外 但在其后面的整个屏幕上 基本上我想改变它color和阿尔法值 我一直在 StackO
  • 有没有办法替代Android中的标准Log?

    有没有办法以某种方式拦截对 android 中标准 Log 的调用并执行其他操作 在桌面 Java 中 人们通常会得到一些记录器 因此有多种方法可以安装不同的日志处理程序 实现 但是 Android似乎对Log有静态调用 我找不到任何有关替
  • 无论如何,要控制宋何时选择Android.bp,何时不选择?

    使用新的构建系统 即 Soong 安卓取代Android mk with Android bp 还有 Android Q 及以上版本 Soong将选择所有Android bp文件 无论所有文件都存在于何处 早些时候 对于 2 级和 3 级模
  • Android 导航回到 Activity;不要重新加载父级

    我有一个场景 我单击 ListFragment 并启动一个新的 Activity 如下所示 public void onListItemClick ListView l View v int position long id super o
  • 错误:任务“:app:mergeDebugResources”执行失败。 > java.lang.ArrayIndexOutOfBoundsException(无错误消息)

    你们有人知道 Gradle 构建中的这个异常吗 Error Execution failed for task app mergeDebugResources gt java lang ArrayIndexOutOfBoundsExcept
  • 如何找到特定路线上两点之间的距离?

    我正在为我的大学开发一个 Android 应用程序 可以帮助学生跟踪大学巴士的当前位置 并为他们提供巴士到达他们的预计时间 截至目前 我获取了公交车的当前位置 通过公交车上的设备 和学生的位置 我陷入了必须找到两个 GPS 坐标之间的距离的
  • Flutter Spotify Api 身份验证

    我需要在使用 Spotify api 的 Flutter 应用程序中对用户进行身份验证 我使用 flutter web auth 打开 WebView 并让用户在那里登录 我无法返回应用程序 在 Spotify 仪表板中 我将回调 Uri
  • Android 性能:SharedPreferences 的成本

    当我的应用程序启动时 我使用分片首选项中的值填充容器类 这个想法是处理 SharedPreferences 和 PreferenceManager 一次 因为我猜它们很重 这是一个示例 SharedPreferences prefs Pre
  • 如何在虚拟机 VirtualBox 上运行 Android-x86 4.2 iso?

    我想用Android x86测试和调试我的应用程序 我之前成功尝试过其他版本的Android x86 但是关于android x86 4 2有一个错误 所以我在这里问我的问题 因为它可能会发生在其他人身上 我安装了oracle VM vir
  • 从 Handler.obtainMessage() 获取什么参数

    我正在使用线程来执行一些 BT 任务 我正在尝试向 UI 线程发送消息 以便我可以基于我的 BT 线程执行 UI 工作 为此 我使用处理程序 但我不知道如何检索发送到处理程序的数据 要发送数据 我使用 handler obtainMessa
  • Android 26 (O) 通知不显示操作图标 [重复]

    这个问题在这里已经有答案了 随着 Android 26 O 引入通知渠道 我一直在调查 Google 提供的com example android notificationchannels 这个示例按预期工作 直到我尝试添加Action到示
  • bluetoothctl 到 hcitool 等效命令

    在 Linux 中 我曾经使用 hidd connect mmac 来连接 BT 设备 但自 Bluez5 以来 这种情况已经消失了 我可以使用 bluetoothctl 手动建立连接 但我需要从我的应用程序使用这些命令 并且使用 blue
  • popupBackground 与 Material Design 相关的问题

    我一直致力于将我的应用程序更新为 Material Design 我有一个使用选项卡的应用程序 由于某种原因 每当我使用 android popupBackground 设置下拉菜单颜色时 它就会崩溃 我设置了一个带有选项卡的默认项目并使用
  • 活动组代码示例

    有人可以给我一些使用活动组的示例代码吗 我的应用程序中有一些按钮 我想将活动应用于这些按钮 目前我正在使用 setVisibility 但我被告知活动组将是更好的选择 这是另一个ActivityGroup 示例项目 http richipa
  • BadPaddingException:无效的密文

    我需要一些帮助 因为这是我第一次编写加密代码 加密代码似乎工作正常 但解密会引发错误 我得到的错误是 de flexiprovider api exceptions BadPaddingException 无效的密文 in the 解密函数
  • 在DialogFragment中,onCreate应该做什么?

    我目前正在摆弄 DialogFragment 以学习使用它 我假设相比onCreateView onCreate 可以这样做 public void onCreate Bundle savedInstanceState super onCr
  • 进程被杀死后不会调用 onActivityResult

    我有一个主要活动 Main 和另一个活动 Sub 由 Main 调用 startActivityForResult new Intent this SubActivity class 25 当我在 Sub 时 我终止该进程 使用任务管理器或

随机推荐