android中下载图片的工具类的实现

android中下载图片的工具类的实现

package com.demo.loading;

import java.io.File;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

public class LoadImage {
	private ExecutorService executorService; // 固定五个线程来
	/*** 文件缓存 ***/
	private ImageFileCache fileCache;
	private static LoadImage instance;
	String TAG = LoadImage.class.getSimpleName();

	public static LoadImage getInstance() {
		if (instance == null) {
			instance = new LoadImage();
		}
		return instance;
	}

	public LoadImage() {
		executorService = Executors.newFixedThreadPool(5);
		new ImageMemoryCache();
		fileCache = new ImageFileCache();
		new HashMap<String, Object[]>();
	}

	/**
	 * 下载图片
	 * 
	 * @param url
	 */
	public void downImage(String url, String cardType) {

		executorService.submit(new downImageTask(url, cardType));
	}

	/**
	 * 下载图片线程任务
	 * 
	 * @author Administrator
	 * 
	 */
	private class downImageTask extends Thread {
		private String url;
		private String cardType;
		private File CardPic;

		public downImageTask(String url, String cardType) {
			this.url = url;
			this.cardType = cardType;
			if (url.contains(".jpg") || url.contains(".JPEG"))
				CardPic = new File("/mnt/sdcard/fetchdata/images/" + cardType
						+ ".jpg");
			else if (url.contains(".png") || url.contains(".PNG"))
				CardPic = new File("/mnt/sdcard/fetchdata/images/" + cardType
						+ ".png");
		}

		@Override
		public void run() {
			try {
				if (!fileCache.exists(url)
						|| (CardPic.exists() && CardPic.length() == 0l)
						|| !CardPic.exists()) {
					// 从网络获取
					byte[] bData = ImageGetForHttp.getStream(url);

					// 写入本地
					if (bData != null && bData.length > 0) {
						fileCache.saveBmpToSd(bData, url, cardType);
					}
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * 获取网落图片资源
	 * 
	 * @param url
	 * @return
	 */
	public static Bitmap getHttpBitmap(String url) {
		URL myFileURL;
		Bitmap bitmap = null;
		try {
			myFileURL = new URL(url);
			// 获得连接
			HttpURLConnection conn = (HttpURLConnection) myFileURL
					.openConnection();
			// 设置超时时间为6000毫秒,conn.setConnectionTiem(0);表示没有时间限制
			conn.setConnectTimeout(6000);
			// 连接设置获得数据流
			conn.setDoInput(true);
			// 不使用缓存
			conn.setUseCaches(false);
			// 这句可有可无,没有影响
			// conn.connect();
			// 得到数据流
			InputStream is = conn.getInputStream();
			// 解析得到图片
			bitmap = BitmapFactory.decodeStream(is);
			// 关闭数据流
			is.close();
		} catch (Exception e) {
			e.printStackTrace();
		}

		return bitmap;

	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值