首页 文章

Google附近连接 - 无法在两台设备之间传输大字节

提问于
浏览
0

当我尝试将具有多个图像的对象(使用Base64转换为字符串)作为STREAM类型发送时,从onPayloadTransferUpdate()方法,我可以看到“失败”结果和设备(仅在连接2个设备时测试)自动断开连接后那 . Google Nearby连接不是发送大字节的正确选项吗?

2 回答

  • 0

    附近的连接应该能够处理 . STREAM有效负载没有明确的大小限制 .

    我建议对字节进行分块(例如,一次发送几个KB)并查看是否有帮助 . 当您一次发送整个文件时,您可能会遇到奇怪的情况,因为它会将字节加载到内存中两次(一次在应用程序内部,一次在“附近”进程内),这可能导致内存不足错误 . Binder是Android上的进程间通信层,它也有一个有限的缓冲区来在进程之间发送数据 .

    您也可以将其保存为临时文件并将其作为FILE有效负载发送,在这种情况下,我们将为您处理分块 .

    免责声明:我在使用附近连接 .

  • 0

    1)你不需要为了附近连接而对数据进行Base64编码 - 你的STREAM可以有原始的二进制数据,并且它可以正常工作 .

    2)你发送的这个数据有多大,以及在什么字节偏移量(你可以在PayloadTransferUpdate中看到这个,你得到Status.ERROR)它会失败吗?听起来你的设备刚刚断开连接 .

    3)你在使用什么Strategy

    4)如果您仍然在进行发现(即您尚未调用stopDiscovery()),请尝试停止发送,然后发送您的Payload - 发现是一项重量级操作,可能会使设备之间的连接长时间间隔难以可靠维护 .

相关问题