2012-01-02 25 views
3

因此,我正在使用Android相机在Android应用程序内拍照。我的用户中约有90%没有问题,但其他10%的用户会得到一张纯黑色图像或奇怪的像素混乱图像。Android - 图片回调数据返回图片,它黑色或混乱

是否有其他人看到过这种行为?或者有任何想法为什么会发生?

例子:

黑色: enter image description here

混乱: enter image description here

+0

这是常见的几个设备或只是随机发生? – Spidy 2012-01-07 02:30:35

回答

1

我已经有过这样类似的问题。 简而言之,问题是:缺少数据。

如果数据流中断时间过长或意外无法使用,则会发生位图/流。

可能发生的另一个示例:下载和上传图像。 如果用户禁用所有突然的Wifi /移动网络,则无法传输更多数据。 你最终在一个溅起的图像。

图像将出现/视图没问题(其中好的意思是黑色/飞溅,它仍然可见!),但内部无效(缺失或损坏的信息)。

如果不是太重要,可以尝试将所有数据移动到位图对象(BitmapFactory.decode *)中,并测试返回的位图是否为空。如果是,则数据可能已损坏。

这只是解决问题的后果,你可以猜到。 更好的方法是将问题放在脚上: 确保与数据源的连接良好(足够大,粗壮的缓冲区)。 尝试避免不必要的强制转换(例如,从char到int) 使用正确类型的缓冲区(字符流的Reader/Writer或字节流的InputStream/OutputStream)。

+0

所以目前,我想上传图片上的图片回调,你会建议在本地保存图片,然后尝试上传图片作为背景任务,并确保它正确完成? – MattoTodd 2012-01-07 19:52:56

+0

@MattoTodd绝对。你使用的方式是你的选择。我确实使用了非常抽象的开源FTP实现。只需要几条简单的线条即可上传图像。 – poitroae 2012-01-07 20:46:50

0

另请检查您是否使用BitmapFactory.Options对象来生成位图。因为此对象的很少方法也会使位图损坏。

1

从android 4.0开始,他们将hardwareAcceleration设置为true,作为清单中的默认值。硬件加速画布不支持图片,你会得到一个黑屏...