使用downloadmanager的代码,先放这。嘿嘿

http://blog.csdn.net/sun6223508/article/details/9290583 and

http://www.trinea.cn/android/android%E7%B3%BB%E7%BB%9F%E4%B8%8B%E8%BD%BD%E7%AE%A1%E7%90%86downloadmanager%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D%E5%8F%8A%E4%BD%BF%E7%94%A8%E7%A4%BA%E4%BE%8B

package com.koolsee.gallery;

import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.app.DownloadManager;
import android.app.DownloadManager.Request;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.view.View.OnTouchListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import com.koolsee.gallery.adapter.RecommendAdapter;
import com.koolsee.gallery.model.Recommend;
import com.koolsee.gallery.widget.GalleryFlow;

/**
 * 首页
 *
 * @author zengxiaotao
 */
public class testActivity extends Activity {

	private DownloadManager dowanloadmanager = null;
    private DownloadChangeObserver downloadObserver;
	private long lastDownloadId = 0;
    public static final Uri CONTENT_URI = Uri.parse("content://downloads/my_downloads");
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.test);
		String serviceString = Context.DOWNLOAD_SERVICE;
		dowanloadmanager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);

		Uri uri = Uri.parse("http://commonsware.com/misc/test.mp4");
		Environment.getExternalStoragePublicDirectory(
				Environment.DIRECTORY_DOWNLOADS).mkdir();

		lastDownloadId = dowanloadmanager.enqueue(new DownloadManager.Request(uri)
				.setAllowedNetworkTypes(
						DownloadManager.Request.NETWORK_MOBILE
								| DownloadManager.Request.NETWORK_WIFI)
				.setAllowedOverRoaming(false)
				.setDestinationInExternalPublicDir(
						Environment.DIRECTORY_DOWNLOADS, "test.mp4"));
		 registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
	        downloadObserver = new DownloadChangeObserver(null);
	        getContentResolver().registerContentObserver(CONTENT_URI, true, downloadObserver);
	}
    class DownloadChangeObserver extends ContentObserver {

        public DownloadChangeObserver(Handler handler) {
			super(handler);
			// TODO Auto-generated constructor stub
		}

		@Override
        public void onChange(boolean selfChange) {
        	  queryDownloadStatus();
        }

    }
	 private BroadcastReceiver receiver = new BroadcastReceiver() {
	        @Override
	        public void onReceive(Context context, Intent intent) {
	            //这里可以取得下载的id,这样就可以知道哪个文件下载完成了。适用与多个下载任务的监听
	            Log.v("tag", ""+intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, 0));
	            queryDownloadStatus();
	        }
	    };

	    private void queryDownloadStatus() {
	        DownloadManager.Query query = new DownloadManager.Query();
	        query.setFilterById(lastDownloadId);
	        Cursor c = dowanloadmanager.query(query);
	        if(c!=null&&c.moveToFirst()) {
	            int status = c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS));

	            int reasonIdx = c.getColumnIndex(DownloadManager.COLUMN_REASON);
	            int titleIdx = c.getColumnIndex(DownloadManager.COLUMN_TITLE);
	            int fileSizeIdx =
	              c.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES);
	            int bytesDLIdx =
	              c.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR);
	            String title = c.getString(titleIdx);
	            int fileSize = c.getInt(fileSizeIdx);
	            int bytesDL = c.getInt(bytesDLIdx);

	            // Translate the pause reason to friendly text.
	            int reason = c.getInt(reasonIdx);
	            StringBuilder sb = new StringBuilder();
	            sb.append(title).append("\n");
	            sb.append("Downloaded ").append(bytesDL).append(" / " ).append(fileSize);

	            // Display the status
	            Log.d("tag", sb.toString());
	            switch(status) {
	            case DownloadManager.STATUS_PAUSED:
	                Log.v("tag", "STATUS_PAUSED");
	            case DownloadManager.STATUS_PENDING:
	                Log.v("tag", "STATUS_PENDING");
	            case DownloadManager.STATUS_RUNNING:
	                //正在下载,不做任何事情
	                Log.v("tag", "STATUS_RUNNING");

	                break;
	            case DownloadManager.STATUS_SUCCESSFUL:
	                //完成
	                Log.v("tag", "下载完成");
//	                dowanloadmanager.remove(lastDownloadId);
	                break;
	            case DownloadManager.STATUS_FAILED:
	                //清除已下载的内容,重新下载
	                Log.v("tag", "STATUS_FAILED");
	                dowanloadmanager.remove(lastDownloadId);
	                break;
	            }
	        }
	    }

	    @Override
	    protected void onDestroy() {
	    	// TODO Auto-generated method stub
	    	super.onDestroy();
	    	  unregisterReceiver(receiver);
	    	  getContentResolver().unregisterContentObserver(downloadObserver);
	    }
}

 

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据