Android DownloadManager 다운로드 진행 조회 (시리즈 3)

3571 단어 android

Android DownloadManager 다운로드 진행 조회 (시리즈 3)
나 는 이전에 Android DownloadManager 에 관 한 글 을 썼 다. (시리즈 1) 의 링크 주소:http://blog.csdn.net/zhangphil/article/details/48949027 (시리즈 2) 'Android DownloadManager 다운로드 상태 조회 (2)'링크 주소:http://blog.csdn.net/zhangphil/article/details/48976427
글 (1) 은 Android DownloadManager 의 기본 사용 방법 을 간단하게 소개 하 였 으 며, 글 (2) 은 Android DownloadManager 의 기본 다운로드 상태 조회 이다.본 고 는 앞의 두 편의 글 을 바탕 으로 작성 한 것 이다. 이 글 은 주로 Android DownloadManager 의 특정한 다운로드 작업 의 다운로드 진 도 를 조회 하 는 방법 을 소개 한다. 예 를 들 어 Android DownloadManager 를 사용 하여 특정한 큰 파일 을 다운로드 하고 어느 순간 에 이 파일 이 얼마나 다운로드 되 었 는 지 조회 해 야 한다.테스트 의 MainActivity. java:
package zhangphil.demo;

import android.app.Activity;
import android.app.DownloadManager;
import android.app.DownloadManager.Query;
import android.app.DownloadManager.Request;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {

	private DownloadManager downloadManager;
	private long Id;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Button button = (Button) findViewById(R.id.button);
		button.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				query();
			}
		});

		downloadManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);

		//                。
		Request request = new Request(
				Uri.parse("http://apkc.mumayi.com/2015/03/06/92/927937/xingxiangyi_V3.1.3_mumayi_00169.apk"));

		//     WIFI       
		request.setAllowedNetworkTypes(Request.NETWORK_WIFI);

		//           
		request.setTitle("    ");
		request.setDescription("       ");
		//                   。
		request.setNotificationVisibility(Request.VISIBILITY_VISIBLE | Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);

		//                       。
		//       Android        
		// request.setDestinationUri(Uri.fromFile(new File("")));

		//    Android        
		request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "my.apk");

		// enqueue       ...
		Id = downloadManager.enqueue(request);
	}

	//       ,       ,      ?
	private void query() {
		Query downloadQuery = new Query();
		downloadQuery.setFilterById(Id);
		Cursor cursor = downloadManager.query(downloadQuery);
		if (cursor != null && cursor.moveToFirst()) {
			int fileName = cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_FILENAME);
			int fileUri = cursor.getColumnIndex(DownloadManager.COLUMN_URI);
			String fn = cursor.getString(fileName);
			String fu = cursor.getString(fileUri);

			int totalSizeBytesIndex = cursor.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES);
			int bytesDownloadSoFarIndex = cursor.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR);

			//         
			int totalSizeBytes = cursor.getInt(totalSizeBytesIndex);

			//               
			int bytesDownloadSoFar = cursor.getInt(bytesDownloadSoFarIndex);

			Log.d(this.getClass().getName(),
					"from " + fu + "       " + fn + "      :" + totalSizeBytes + "     :" + bytesDownloadSoFar);

			cursor.close();
		}
	}
}

MainActivity. java 가 의존 하 는 activitymain. xml 파일 코드 에는 조회 상 태 를 다운로드 하 는 단추 만 포함 되 어 있 습 니 다. 조회 이 벤트 를 촉발 하기 위해 서 는 더 이상 군말 을 하지 않 습 니 다.

좋은 웹페이지 즐겨찾기