我在一个非常简单的场景中通过 Nearby 在两部手机之间发送文件。
发送者简单地构造一个Payload.Type.FILE
类型的Payload
并将其发送给接收者 .
在接收方端,我想知道文件传输何时开始(接收方何时意识到传入文件)。在文档中,它说明了关于 onPayloadReceived
的内容:
Depending on the type of the Payload, all of the data may or may not have been received at the time of this call. Use onPayloadTransferUpdate(String, PayloadTransferUpdate) to get updates on the status of the data received.
但是,onPayloadTransferUpdate
似乎仅在文件的重要部分已传输后才被调用。根据我的测试,每次附近收到至少 2^16 字节时都会调用它。
简而言之,我想知道接收方是否可以在我的文件的任何字节实际发送之前知道有效载荷传输的开始,即 update.getBytesTransferred() == 0
.
此外,为什么每 2^16 字节调用一次 onPayloadTransferUpdate
?总是这个尺寸吗?
最佳答案
是的,您是正确的,onPayloadReceived() 回调仅在收到第一个 block 时触发。
就像@Xlythe 提到的那样,如果您希望在发送方开始传输时向接收方发出信号,您可以从发送方发送一个 BYTES 有效负载,让接收方知道文件即将到来。
在任何情况下,鉴于我们当前的 block 大小为 64k,传输开始与接收器接收到第一个 block 之间的延迟应该(同样,正如@Xlythe 提到的)<1 秒,因为蓝牙经典的带宽> 64KB/秒。
这不是你看到的吗?
关于android - Google Nearby 和 onPayloadTransferUpdate 频率中的传入文件负载感知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51261753/