我正在尝试显示通过本地网络发送到我的 android 设备的图像。图像通过 tcp 从计算机发送到我的 android 设备。图片是png的。传过来的数据是png的字节数组流,打包成google protobuf消息。在android端,在接收到数据的时候,会读入一个字节数组,然后将该数组交给BitmapFactory.decodeByteArray()
. 但是,这大约 90% 的时间返回 null。这仅发生在真实设备上,但我目前只能在令人难以置信的 htc 上进行测试。我已经在 android sdk 模拟器上试过这个,我可以 100% 地得到我的图像。
与在线 BitmapFactory 相关的其他问题一直与使用文件流有关,其中解码没有获得全部数据,但我还没有找到任何解决方案,以便开发人员确定是否收到了全部数据,并且它只发生在真实设备上。
是否有某种我不知道的用法decodeByteArray()
?byte[]
我传入的只是文件本身。
编辑:多亏了 Brian Cooley 的第二个见解。
我太快判断错误可能在 decodeByteArray() 中。如果有人遇到这个问题,请确保您确保您拥有完整的数据。我错误地假设我的字节流很好。所以首先对你发送和接收的数据做一个快速的比较,并确保你得到了你应该得到的。