URLから画像をダウンロードしてImageViewとして表示しようとしています。ダウンロードは、AsyncTaskを使用してバックグラウンドで行われます。しかし、BitmapFactoryのdecodeStreamを呼び出すと、常にnullオブジェクトが返されます。接続に提供されたURLが正しいことを確認しましたが、BitmapFactoryがHTTP接続から返されたInputStreamからイメージを読み取れないようです。ここでは以下のコードは次のとおりです。BitmapFactory.decodeStream()を使用してURLから画像を読み込むことができません。
@Override
protected Bitmap doInBackground(String... uri) {
Bitmap bm = null;
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(Uri.encode(uri[0]));
try {
HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
String contentType = entity.getContentType().getValue();
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int halfScreen = metrics.widthPixels/2;
int photoWidth = halfScreen > 200 ? 200 : halfScreen;
if (contentType.contains("image/jpeg") || contentType.contains("image/png") || contentType.contains("image/gif")) {
bm = BitmapFactory.decodeStream(new BufferedInputStream(entity.getContent()));
if (bm.getWidth() > photoWidth)
bm = Bitmap.createScaledBitmap(bm, photoWidth, Math.round((photoWidth*bm.getHeight())/bm.getWidth()), true);
}
} catch (Exception e) {
bm = null;
}
return bm;
}
奇妙である何ことはまったく同じコードがネクサスS上で細かい動作しますが、アンドロイド2.1アップデート1を実行しているサムスンでは動作しないということです。
は、あなたが潜在的なメモリエラーのlogcatを確認しました? –
メモリエラーはありませんでした。私は自分の質問に答えを出しました。ありがとう。 – sbruno74