android - Google Nearby 中的传入文件有效负载感知和 onPayloadTransferUpdate 频率
问题描述
在一个非常简单的场景中,我正在通过 Nearby 在两部手机之间发送文件。
发送者只需制作一个Payload
类型Payload.Type.FILE
并将其发送给接收者。
在接收方,我想知道文件传输何时开始(接收方何时知道传入的文件)。在文档中,它说明了onPayloadReceived
:
根据有效负载的类型,在调用时可能已收到或未收到所有数据。使用 onPayloadTransferUpdate(String, PayloadTransferUpdate) 获取收到的数据状态的更新。
但是,onPayloadTransferUpdate
似乎仅在传输文件的重要部分后才调用。根据我的测试,每次附近收到至少 2^16 个字节时都会调用它。
简而言之,我想知道接收方是否可以在我的 FILE 的任何字节实际发送之前知道有效负载传输的开始,即update.getBytesTransferred() == 0
.
另外,为什么onPayloadTransferUpdate
每 2^16 字节调用一次?总是这个尺寸吗?
解决方案
是的,你是正确的 onPayloadReceived() 回调仅在收到第一个块时触发。
就像@Xlythe 提到的那样,如果您想在发送方开始传输时为接收方发送信号,您可以从发送方发送一个字节有效负载,让接收方知道文件即将到来。
在任何情况下,鉴于我们当前的块大小为 64k,传输开始和接收器收到第一个块之间的延迟应该(再次,如 @Xlythe 提到的)<1 秒,因为蓝牙经典的带宽 > 64KB /秒。
这不是你看到的吗?
推荐阅读
- mongodb - 如何使用通过rest webservice(org.springframework.data.mongodb.core.MongoOperations)插入的Grails应用程序更新记录?
- java - 安卓设备和基于 Linux 的硬件之间的数据传输
- c# - 尝试为 DiscordSocketClient 及其属性创建模拟对象
- javascript - 如何在组件内部使用 React 自定义环境变量
- java - 带有 gitlab CI 的 vaadin-maven-plugin 目标包错误
- javascript - 使用 JS 禁用对承诺失败的操作
- javascript - Angularjs检索特定名称/对象
- javascript - javascript 中的 map 函数对于 React 组件无法正常工作
- pattern-matching - Ocaml 模式匹配:为什么不使用这种匹配?
- python - 我怎样才能只删除只有字符串而不是特殊字符的括号