Android decodeByteArray()大约90%的时间返回null

Android decodeByteArray()大约90%的时间返回null,android,bitmapfactory,Android,Bitmapfactory,我正在尝试显示通过本地网络发送到android设备的图像。图像通过tcp从计算机发送到我的android设备。图像是一个png。发送的数据是png的字节数组流,它被打包成一条google protobuf消息。在android端,当接收数据时,它被读入字节数组,然后数组被提供给BitmapFactory.decodeByteArray。然而,这在大约90%的时间内返回null。这只发生在真正的设备上,但我目前只能在htc上进行测试。我已经在android sdk模拟器上试过了,我可以100%的获

我正在尝试显示通过本地网络发送到android设备的图像。图像通过tcp从计算机发送到我的android设备。图像是一个png。发送的数据是png的字节数组流,它被打包成一条google protobuf消息。在android端,当接收数据时,它被读入字节数组,然后数组被提供给BitmapFactory.decodeByteArray。然而,这在大约90%的时间内返回null。这只发生在真正的设备上,但我目前只能在htc上进行测试。我已经在android sdk模拟器上试过了,我可以100%的获得我的图像

与BitmapFactory online相关的其他问题始终与使用文件流有关,在文件流中,解码并不能获取全部数据,但我还没有找到解决方案,以确定开发人员是否能够接收到全部数据,并且这种情况只会发生在真实的设备上

对于decodeByteArray,是否有某种我不知道的用法?我传递的字节[]就是文件本身

编辑:多亏了Brian Cooley的第二个见解才得以解决


我很快就判断出错误可能在decodeByteArray中。如果有人遇到这个问题,一定要确保你有完整的数据。我错误地认为我的字节流是好的。因此,首先对发送和接收的数据进行快速区分,并确保您得到了您应该得到的数据。

您可以尝试的一件事是将原始字节写入SD卡上的文件,并在计算机上查看它,就像建议的那样


这将揭示问题是在文件中还是在代码中。由于您没有在emulator中看到问题,我猜这与通过电话下载数据有关。

谢谢您的回复。在本地写入数据时,我肯定会看到图像被置乱。我们必须调查为什么会这样。我想知道为什么有时候会这样。难以置信和仿真器之间有什么区别?