2012-09-03 3 views
3

아래 기능을 사용하여 서버에서 이미지를 다운로드합니다. 이것은 안드로이드 2.2 Froyo 장치를 제외한 모든 안드로이드 버전에 완벽하게 작동합니다. 도와주세요.서버에서 이미지 비트 맵을 다운로드하면 Android 2.2에서 null이 반환됩니다.

private Bitmap downloadImage(String url) { 
     System.out.println("Splash Ad downloadImage Url " + url); 
     Bitmap bm = null; 
     try { 
      URL aURL = new URL(url); 
      URLConnection conn = aURL.openConnection(); 
      conn.connect(); 
      InputStream is = conn.getInputStream(); 
      BufferedInputStream bis = new BufferedInputStream(is); 
      bm = BitmapFactory.decodeStream(bis); 
      bis.close(); 
      is.close(); 
     } catch (IOException e) { 
      Log.e("Hub", "Error getting the image from server : " 
        + e.getMessage().toString()); 
      e.printStackTrace(); 
     } 
     return bm; 
    } 
+0

무엇이 오류입니까? 너 뭐 해봤 니? – njzk2

+0

null 비트 맵만 반환하는 오류/예외는 없습니다. –

+0

무엇을 시도 했습니까? 파일이 존재하는지 확인 했습니까? 입력 스트림을 읽었을 때 이미지를 디코딩 할 수 있습니까? – njzk2

답변

0

이 코드를 사용해보십시오.

public class ImageDisplay extends Activity { 
     ImageView image; 
     ProgressBar spinner; 
     TextView message; 
     String path; 
@Override 
     public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_image_display); 
    image=(ImageView) findViewById(R.id.imageDisplay); 
    spinner=(ProgressBar)findViewById(R.id.progressBar_spinner); 
    message=(TextView)findViewById(R.id.textView1); 
    spinner.setVisibility(View.INVISIBLE); 
    displayImage(); 
} 
     private class DownloadImage extends AsyncTask<String, Void,Bitmap > 
      { 
Bitmap bitmap; 
String error_messsage="No error"; 
@Override 
protected Bitmap doInBackground(String... urls) { 
    for(String url:urls){ 
    HttpUriRequest request = new HttpGet(url.toString()); 
     HttpClient httpClient = new DefaultHttpClient(); 
     try { 
      HttpResponse response = httpClient.execute(request); 
      StatusLine statusLine = response.getStatusLine(); 
      int statusCode = statusLine.getStatusCode(); 
      if (statusCode == 200) { 
       HttpEntity entity = response.getEntity(); 
       byte[] bytes = EntityUtils.toByteArray(entity); 
      Log.e("here",""+bytes.length); 
       bitmap = BitmapFactory.decodeByteArray(bytes, 0,bytes.length); 
       Thread.sleep(1000); 
      } 
      else 
      { 
       error_messsage="Download failed, HTTP response code "+ statusCode + " - " + statusLine.getReasonPhrase();     
      } 
     } catch (Exception er) { 
      Log.e("Error",""+er); 
     }} 
     //image.setImageBitmap(bitmap); 
    return bitmap ; 
} 

@Override 
protected void onPostExecute(Bitmap result) { 
    spinner.setVisibility(View.INVISIBLE); 
    image.setImageBitmap(result); 

} 
    } 
    public void displayImage() 
    { 

    DownloadImage task = new DownloadImage(); 
    task.execute(new String[] { "http://team-android.com/wp-    content/uploads/2011/03/Android-3d_428.jpg" }); 
    snap.setVisibility(View.VISIBLE); 

    } 
관련 문제