当我尝试将具有多个图像的对象(使用Base64转换为字符串)作为STREAM类型发送时,从onPayloadTransferUpdate()方法,我可以看到“失败”结果和设备(仅在连接了2个设备时进行测试)之后自动断开连接。 Google Nearby连接不是发送大字节的正确选项吗?
答案 0 :(得分:0)
附近的连接应该能够处理。 STREAM有效负载没有明确的大小限制。
我建议对字节进行分块(例如,一次发送几个KB)并查看是否有帮助。当您一次发送整个文件时,您可能会遇到奇怪的情况,因为它会将字节加载到内存中两次(一次在应用程序内部,一次在“附近”进程内),这可能会导致内存不足错误。 Binder是Android上的进程间通信层,它也有一个有限的缓冲区来在进程之间发送数据。
您也可以将其保存为临时文件并将其作为FILE有效内容发送,在这种情况下,我们将为您处理分块。
免责声明:我在使用附近连接。
答案 1 :(得分:0)
1)为了附近连接,你不需要对数据进行Base64编码 - 你的STREAM可以有原始的二进制数据,而且工作得很好。
2)您发送的数据有多大,以及在哪个字节偏移处(您可以在使用Status.ERROR获得的PayloadTransferUpdate中看到这一点)是否会失败?听起来你的设备刚刚断开连接。
3)您使用的是什么Strategy?
4)如果您仍然在进行发现(即您还没有调用stopDiscovery()),请尝试停止发送,然后发送您的Payload - 发现是一项重量级操作,可能会难以可靠地保持之间的连接设备间隔时间很长。