Google附近的连接2.0功能

时间:2018-08-22 23:27:43

标签: android google-nearby

我正在评估Google附近的连接2.0,尤其是在评估其协同效应。为此,我正在完全脱机的情况下针对Wifi,蓝牙和BLE进行评估,而无需任何路由器。

场景

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

我正在将Android Samsung S6 SM-G920F设备与android版本:6.0.1和playservices版本12.8.74一起使用

我有以下问题/疑问

Q1 :首先,最多可以模拟连接3到4个设备,这比其他设备断开连接的结果更多。即使仅连接了3台设备,并且我连续30秒钟发送消息,其中一台设备还是断开连接?用简单的话来说,与任何设备的连接不能维持超过45秒。通常会在25到45秒之间断开连接

第二季度:我无法像这样使用Wifi一样连续30秒连续发送消息/文件

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

因为我尝试执行此操作,所以我遇到了很多工作。我必须等待onTransferPayLoadUpdate()

中的回调

第3季度:如果我尝试将1MB或更多的文件发送给其他对等方,则对等方在onPayloadReceived回调中成功接收到该文件,但是服务器/发送方在收到过多请求后就收到了成功状态延迟。就我而言,它是在客户端回调后1分钟到5分钟之间。在服务器上收到成功回调之前,我无法发送新文件。如果我尝试在获取回调之前发送它,则不会发生任何事情。从字面上看没什么。因此,从本质上讲,我只能发送一次1MB的文件,然后必须重新发送这两个设备以发送另一个文件。

1 个答案:

答案 0 :(得分:3)

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

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

所有Android设备都使用移动蓝牙芯片,不幸的是它们较弱(但体积小且对功率敏感),这导致它们在理论上限制为7个设备,但在实际情况下限制为3-4个设备。更糟糕的是,智能手表和配对耳机也吞没了这个极限。这就是为什么您遇到问题的原因。

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

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

A2:是否可以包含所看到错误的堆栈跟踪信息? Payload.Type.STREAM用于连续发送数据。其他有效负载类型也应该也起作用,排除一些罕见但潜在的问题,例如BYTE有效负载会填满手机RAM。

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