package com.mgw.member.updateApp; import java.io.File; import com.mgw.member.ottoEvent.AppDownloadProgressEvent; import com.mgw.member.ottoEvent.BusProvider; import com.mgw.member.ottoEvent.ReGetLoginInfoEvent; import com.mgw.member.uitls.LogUtils; import com.mgw.member.uitls.Utils; import com.squareup.otto.Produce; import com.thin.downloadmanager.DownloadManager; import com.thin.downloadmanager.DownloadRequest; import com.thin.downloadmanager.DownloadStatusListener; import com.thin.downloadmanager.ThinDownloadManager; import com.thin.downloadmanager.DownloadRequest.Priority; import android.app.IntentService; import android.content.Context; import android.content.Intent; import android.database.CursorJoiner.Result; import android.net.Uri; import android.os.AsyncTask; import android.os.Environment; import android.util.Log; public class MyIntentService extends IntentService { private ThinDownloadManager downloadManager; private String urlPath; // 下载的线程数 private static final int DOWNLOAD_THREAD_POOL_SIZE = 4; MyDownloadListner myDownloadStatusListener = new MyDownloadListner(); int downloadId1 = 0; private DownloadRequest request1; EppNotificationControl notificationControl; public MyIntentService() { super("MyIntentService"); } Context context; private String fVersion_FileURL; @Override public void onCreate() { // TODO Auto-generated method stub context = this; super.onCreate(); } @Override public void onStart(Intent intent, int startId) { // TODO Auto-generated method stub super.onStart(intent, startId); BusProvider.getInstance().register(this); fVersion_FileURL = intent.getStringExtra("FVersion_FileURL"); Log.i("jone", "download FVersion_FileURL" + fVersion_FileURL); } @Override protected void onHandleIntent(Intent intent) { urlPath = Utils.createSDCardDir("upapk.apk"); notificationControl = new EppNotificationControl(urlPath, context); downloadManager = new ThinDownloadManager(DOWNLOAD_THREAD_POOL_SIZE); initDownload(); if (downloadManager.query(downloadId1) == DownloadManager.STATUS_NOT_FOUND) { downloadId1 = downloadManager.add(request1); } notificationControl.showProgressNotify(); } private void initDownload() { Uri downloadUri = Uri.parse(fVersion_FileURL); Uri destinationUri = Uri.parse(urlPath); request1 = new DownloadRequest(downloadUri).setDestinationURI(destinationUri).setPriority(Priority.HIGH).setDownloadListener(myDownloadStatusListener); } int oldprogress = 0; class MyDownloadListner implements DownloadStatusListener { @Override public void onDownloadComplete(int id) { if (id == downloadId1) { Log.i("jone", "download completed"); AppDownloadProgressEvent appDownloadProgressEvent = getAppDownloadProgressEvent(); appDownloadProgressEvent.setDownloadstatus(2); BusProvider.getInstance().post(appDownloadProgressEvent); } } @Override public void onDownloadFailed(int id, int errorCode, String errorMessage) { if (id == downloadId1) { AppDownloadProgressEvent appDownloadProgressEvent = getAppDownloadProgressEvent(); appDownloadProgressEvent.setDownloadstatus(3); BusProvider.getInstance().post(appDownloadProgressEvent); } } @Override public void onProgress(int id, long totalBytes, long downloadedBytes, int progress) { if (id == downloadId1) { Log.i("jone", progress + ""); if (progress > oldprogress) { notificationControl.updateNotification(progress); AppDownloadProgressEvent appDownloadProgressEvent = getAppDownloadProgressEvent(); appDownloadProgressEvent.setProgress(progress); appDownloadProgressEvent.setDownloadstatus(1); BusProvider.getInstance().post(appDownloadProgressEvent); } oldprogress = progress; } } } @Override public void onDestroy() { // TODO Auto-generated method stub Log.i("jone", "onDestroy"); super.onDestroy(); BusProvider.getInstance().unregister(this); } @Produce public AppDownloadProgressEvent getAppDownloadProgressEvent() { LogUtils.i("otto" + "ReGetLoginInfoEvent=newProgres="); AppDownloadProgressEvent appDownloadProgressEvent = new AppDownloadProgressEvent(); return appDownloadProgressEvent; } }