首页 文章

Google Nearby Connections 2.0功能

提问于
浏览
0

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

Scenario

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

我使用安卓三星S6 SM-G920F设备与Android版本:6.0.1和播放服务版本12.8.74

我有以下问题/问题

Q1 :首先,最多3到4个设备可以同时连接多于此结果导致其他设备的断开事件 . 即使只连接了3个设备,并且我连续发送消息30秒,其中一个断开连接?简单来说,无法与任何设备保持连接超过45秒 . 通常在25-45秒之间断开连接

Q2 :我不能连续30秒发送消息/文件,就像我们可以像这样使用Wifi一样

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

因为如果我尝试这样做,那么我得到了太多工作的例外 . 我必须等待 onTransferPayLoadUpdate() 中的回调

Q3 :如果我尝试将1MB或更多的文件发送给其他对等体,则对等体在 onPayloadReceived 回调中成功接收到该文件,但服务器/发送者在延迟太多后收到成功状态 . 在我的情况下,客户端回调后它在1分钟到5分钟之间 . 在我获得服务器上的成功回调之前,我无法发送新文件 . 如果我在收到回调之前尝试发送它,则没有任何反应 . 没什么 . 所以本质上我只能发送1MB的文件然后我不得不重新发送这两个设备来发送另一个文件 .

1 回答

  • 3

    这应该分为3个单独的问题 . 它有助于未来的开发人员更容易所以,如果你有时间这样做,请告诉我,我也会分开我的答案 . 但无论如何,让我们进入它吧!

    A1:Nearby Connections有3个不同的策略 . 策略越有限,我们可以使用的媒体类型就越多 . 因此,考虑到这一点,并且没有涉及路由器,P2P_CLUSTER将仅使用蓝牙 . 这是最普遍的策略,因此它拥有最少的媒体 .

    所有Android设备都使用移动蓝牙芯片,不幸的是它们很弱(但功耗很小且功耗敏感),这使得它们具有理论上的7个设备限制但实际的3~4个设备限制 . 为了使事情变得更糟,智能 Watch 和配对耳机也会超过这个极限 . 这就是你遇到问题的原因 .

    P2P_STAR和P2P_POINT_TO_POINT都受到更多限制,因为您无法以任何方向连接 . 您需要事先选择主机是谁,让每个人都扫描并连接到该主机 . 但是,您可以获得WiFi热点的额外好处,这些热点具有更高的带宽和更多的同时支持的设备 . 我已经看到7个设备很高兴地连接到Lollipop设备 .

    如果你想超越它,进入10和100,并且路由器不可用,你将不得不 Build 一个网状网络 . 如果您有兴趣,我可以将您链接到如何执行此操作的示例 . 我们不在Connections中提供对它的支持,但是其他人已经在我们之上构建了网格,因此我们可以指向正确的方向 .

    A2:你能包含你看到的错误的堆栈跟踪吗? Payload.Type.STREAM是为连续发送数据而构建的 . 其他有效载荷类型也应该工作,禁止一些罕见但潜在的问题,如BYTE有效载荷填满手机RAM .

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

相关问题