gpt4 book ai didi

android - Google 附近连接 2.0 功能

转载 作者:行者123 更新时间:2023-12-02 15:25:11 25 4
gpt4 key购买 nike

我正在评估Google Nearby Connections2.0,更具体地评估它的协同效应。为此,我正在完全离线的场景中,在没有任何路由器的情况下,针对 Wifi、蓝牙和 BLE 对其进行评估。

场景

一台设备正在广告,所有其他设备(总共 8 台设备)正在发现。连接成功后,我将在 30 秒内直接向每个连接的设备发送 20B、200B 和 33KB 大小的简单文件。

我使用的是 Android 三星 S6 SM-G920F Android 版本为 6.0.1 且 playservices 版本为 12.8.74 的设备

我有以下问题

Q1:首先,最多可以同时连接 3 到 4 个设备,这会导致其他设备断开连接。即使只有 3 个设备连接,并且我连续发送消息 30 秒,其中一个已断开连接?简而言之,与任何设备的连接时间无法超过 45 秒。通常断开连接发生在 25 - 45 秒之间

问题2:我无法像使用 Wifi 那样连续发送消息/文件 30 秒

While(30sec){
bluetoothSocket.outputStream.write(bytes)
}

因为如果我尝试这样做,那么我会得到太多工作的异常。我必须等待 onTransferPayLoadUpdate()

中的回调

Q3:如果我尝试向其他对等方发送 1MB 或更大的文件,对等方在 onPayloadReceived 回调中成功收到文件,但服务器/发送方收到成功状态经过太多的延迟后。就我而言,它是在客户端回调后 1 分钟到 5 分钟之间。在服务器上收到成功回调之前,我无法发送新文件。如果我尝试在收到回调之前发送它,则不会发生任何事情。从字面上看什么也没有。所以本质上我只能发送一次 1MB 的文件,然后我必须重新发送两个设备才能发送另一个文件。

最佳答案

这应该分为 3 个单独的问题。它可以帮助 future 的开发人员更轻松地进行搜索。因此,如果您有时间这样做,请告诉我,我也会分开回答。但无论如何,让我们开始吧!

A1:附近连接有 3 个独立的策略。策略越有限,我们可以使用的媒介类型就越多。因此,考虑到这一点,并且不涉及路由器,P2P_CLUSTER 将仅使用蓝牙。这是最通用的策略,因此可用的媒介最少。

所有 Android 设备都使用移动蓝牙芯片,不幸的是,这些芯片很弱(但体积小且功耗敏感),这导致它们理论上有 7 个设备限制,但实际有 3~4 个设备限制。更糟糕的是,智能 watch 和配对耳机也耗尽了这一限制。这就是您遇到问题的原因。

P2P_STAR 和 P2P_POINT_TO_POINT 都受到更多限制,因为您无法在任何方向进行连接。您需要事先选择主机是谁,并让每个人扫描并连接到该主机。但您还可以获得 WiFi 热点的额外好处,它具有更高的带宽和支持更多数量的并发设备。我见过 7 台设备愉快地连接到 Lollipop 设备。

如果您想超越这个范围,进入 10 到 100 秒,并且没有可用的路由器,则必须构建一个网状网络。如果您有兴趣,我可以为您提供有关如何执行此操作的示例的链接。我们不在 Connections 中提供对此的支持,但其他人在我们之上构建了网格,因此我们可以为您指明正确的方向。

A2:您可以包含您所看到的错误的堆栈跟踪吗? Payload.Type.STREAM 是为连续发送数据而构建的。其他有效负载类型也应该可以工作,但会出现一些罕见但潜在的问题,例如字节有效负载填满手机 RAM。

A3:两个设备都需要等待onPayloadTransferUpdate(SUCCESS)。 onPayloadReceived 只是一个 header ,意味着有传入文件或流,但尚未收到数据。对于字节有效负载,我们实际上在 header 内发送完整字节有效负载,因此这是数据立即可用的唯一时间。

关于android - Google 附近连接 2.0 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51976470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com