2013-02-11 30 views

回答

1

我用类似的东西从URL中下载图片:
进口java.io. IOException异常; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection;

import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.os.AsyncTask; 
import android.util.Log; 
import android.widget.ImageView; 

public class AsyncDownloadImage extends AsyncTask<ImageView, Void, Bitmap> { 

    private static final String TAG = "AsyncDownloadImage"; 
    ImageView imageView = null; 

    @Override 
    protected Bitmap doInBackground(ImageView... imageViews) { 
     this.imageView = imageViews[0]; 
     return DownloadImage((String) imageView.getTag()); 
    } 

    @Override 
    protected void onPostExecute(Bitmap result) { 
     if (result != null) 
      imageView.setImageBitmap(result); 
    } 

    private InputStream OpenHttpConnection(String urlString) throws IOException { 
     InputStream in = null; 
     int response = -1; 

     URL url = new URL(urlString); 
     URLConnection conn = url.openConnection(); 

     if (!(conn instanceof HttpURLConnection)) 
      throw new IOException("Not an HTTP connection"); 

     try { 
      HttpURLConnection httpConn = (HttpURLConnection) conn; 
      httpConn.setAllowUserInteraction(false); 
      httpConn.setInstanceFollowRedirects(true); 
      httpConn.setRequestMethod("GET"); 
      httpConn.connect(); 
      response = httpConn.getResponseCode(); 
      if (response == HttpURLConnection.HTTP_OK) { 
       in = httpConn.getInputStream(); 
      } 
     } catch (Exception ex) { 
      throw new IOException("Error connecting"); 
     } 
     return in; 
    } 

    private Bitmap DownloadImage(String URL) { 
     Bitmap bitmap = null; 
     InputStream in = null; 
     try { 
      in = OpenHttpConnection(URL); 
      bitmap = BitmapFactory.decodeStream(in); 
      if (in != null) 
       in.close(); 
     } catch (IOException e1) { 
      Log.e(TAG, "Error in downloading image"); 
      e1.printStackTrace(); 
     } 
     return bitmap; 
    } 
} 

我用它在的ImageView的标签设置的方式,我想下载,并作为参数传递的ImageView的图像的URL。例如。

ImageView iv.setTag("http://www.example.com/image.png"); 
new AsyncDownloadImage().execute(iv); 

如果你想使用一个插座,你可以像打开一个套接字连接下载:

Socket socket = new Socket(ip, port); 
InputStream inputStream = socket.getInputStream();