首页 > 解决方案 > Google Nearby 中的传入文件有效负载感知和 onPayloadTransferUpdate 频率

问题描述

在一个非常简单的场景中,我正在通过 Nearby 在两部手机之间发送文件。

发送者只需制作一个Payload类型Payload.Type.FILE并将其发送给接收者

接收方,我想知道文件传输何时开始(接收方何时知道传入的文件)。在文档中,它说明了onPayloadReceived

根据有效负载的类型,在调用时可能已收到或未收到所有数据。使用 onPayloadTransferUpdate(String, PayloadTransferUpdate) 获取收到的数据状态的更新。

但是,onPayloadTransferUpdate似乎仅在传输文件的重要部分后才调用。根据我的测试,每次附近收到至少 2^16 个字节时都会调用它。

简而言之,我想知道接收方是否可以在我的 FILE 的任何字节实际发送之前知道有效负载传输的开始,即update.getBytesTransferred() == 0.

另外,为什么onPayloadTransferUpdate每 2^16 字节调用一次?总是这个尺寸吗?

标签: androidbluetoothwifi-directgoogle-nearby

解决方案


是的,你是正确的 onPayloadReceived() 回调仅在收到第一个块时触发。

就像@Xlythe 提到的那样,如果您想在发送方开始传输时为接收方发送信号,您可以从发送方发送一个字节有效负载,让接收方知道文件即将到来。

在任何情况下,鉴于我们当前的块大小为 64k,传输开始和接收器收到第一个块之间的延迟应该(再次,如 @Xlythe 提到的)<1 秒,因为蓝牙经典的带宽 > 64KB /秒。

这不是你看到的吗?


推荐阅读