来自URL错误的Android图库

时间:2014-01-31 01:09:03

标签: android bitmap inputstream android-gallery

我正在开发一个为某些客户提供图库的应用。我从每个客户的图像中得到了一些网址。问题是我没有尝试下载图像时出错,但有些图像无法在某些设备上下载/显示。例如,我有一个适用于S3的网址,但不适用于iconia标签和motorola razr。

下面是我的代码:

InputStream is = (InputStream) fetch(url);
Bitmap bitmap = BitmapFactory.decodeStream(new FlushedInputStream(is));
Drawable img = new BitmapDrawable(bitmap);

获取方法:

public Object fetch(String address) throws MalformedURLException, IOException {
    URL url = new URL(address);
    Object content = url.getContent();
    return content;
}  

FlushInputStream方法:

static class FlushedInputStream extends FilterInputStream {
    public FlushedInputStream(InputStream inputStream) {
        super(inputStream);
    }

    @Override
    public long skip(long n) throws IOException {
        long totalBytesSkipped = 0L;
        while (totalBytesSkipped < n) {
            long bytesSkipped = in.skip(n - totalBytesSkipped);
            if (bytesSkipped == 0L) {
                int b = read();
                if (b < 0) {
                    break;  // we reached EOF
                } else {
                    bytesSkipped = 1; // we read one byte
                }
            }
            totalBytesSkipped += bytesSkipped;
        }
        return totalBytesSkipped;
    }
}

InputStream在两个设备中是相同的,但在其中一些设备上(如iconia,razr),位图变为空,而在其中一些(如S3)上,这是正常的。

我从谷歌小组获得此代码,作为不下载所有图像的错误的解决方法。顺便说一下,skip方法永远不会调用FlushedInputStream

有没有办法让它适用于所有设备?或任何其他代码的建议下载图像并将其显示到图库中?

0 个答案:

没有答案