|
|
@@ -8,6 +8,7 @@ import android.os.Handler;
|
|
|
import android.os.Message;
|
|
|
import android.support.annotation.Nullable;
|
|
|
import android.support.annotation.RequiresApi;
|
|
|
+import android.text.TextUtils;
|
|
|
import android.util.Log;
|
|
|
import android.view.View;
|
|
|
import android.webkit.WebChromeClient;
|
|
|
@@ -15,6 +16,7 @@ import android.webkit.WebResourceRequest;
|
|
|
import android.webkit.WebView;
|
|
|
import android.webkit.WebViewClient;
|
|
|
import android.widget.ImageView;
|
|
|
+import android.widget.ProgressBar;
|
|
|
import android.widget.TextView;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
@@ -22,10 +24,17 @@ import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.bumptech.glide.Glide;
|
|
|
import com.bumptech.glide.request.RequestOptions;
|
|
|
+import com.kfzs.duanduan.ActDownloadMgr;
|
|
|
+import com.kfzs.duanduan.adp.DownloadMgrAdapter;
|
|
|
+import com.kfzs.duanduan.bean.DownloadStatus;
|
|
|
+import com.kfzs.duanduan.datashare.provider.download.DownLoadInfo;
|
|
|
import com.kfzs.duanduan.event.BigEvent;
|
|
|
+import com.kfzs.duanduan.event.EventDownloadHandler;
|
|
|
import com.kfzs.duanduan.event.EventTypes;
|
|
|
+import com.kfzs.duanduan.services.DownloadTaskService;
|
|
|
import com.kfzs.duanduan.services.KFDownloadServices;
|
|
|
import com.kfzs.duanduan.utils.dlg.DeviceUtils;
|
|
|
+import com.kfzs.duanduan.view.KFProgressButton;
|
|
|
import com.sheep.gamegroup.di.components.DaggerTaskDialogComponent;
|
|
|
import com.sheep.gamegroup.di.modules.TaskDialogModule;
|
|
|
import com.sheep.gamegroup.model.entity.BaseMessage;
|
|
|
@@ -33,6 +42,7 @@ import com.sheep.gamegroup.model.entity.TaskEty;
|
|
|
import com.sheep.gamegroup.model.entity.TaskState;
|
|
|
import com.sheep.gamegroup.presenter.TaskDialogContract;
|
|
|
import com.sheep.gamegroup.presenter.TaskDialogPresenter;
|
|
|
+import com.sheep.gamegroup.util.CommonUtil;
|
|
|
import com.sheep.gamegroup.util.DeviceUtil;
|
|
|
import com.sheep.gamegroup.util.Jump2View;
|
|
|
import com.sheep.gamegroup.util.MyDbManager;
|
|
|
@@ -95,14 +105,16 @@ public class DialogActivity extends Activity implements TaskDialogContract.View
|
|
|
private List<TaskState> stateList = new ArrayList<>();//状态列表
|
|
|
private TaskStateAdapter stateAdapter;
|
|
|
|
|
|
- private DownloadManager downloadManager;
|
|
|
- DownloadInfo downloadInfo;
|
|
|
private int type;//0,开始任务 1,开始试玩 2,开始下载 3,开始安装;4,信用卡跳转
|
|
|
- private boolean isStartPause = false;//false:开始,true:暂停
|
|
|
private boolean isDownLoad = false;//是否下载
|
|
|
private String buttonStr = "开始任务";//是否下载
|
|
|
private Activity activity;
|
|
|
- Intent intentService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 下载模块修改
|
|
|
+ */
|
|
|
+ private DownloadTaskService mDownloadTaskService;
|
|
|
+ DownLoadInfo downLoadInfo;
|
|
|
|
|
|
@Inject
|
|
|
TaskDialogPresenter preference;
|
|
|
@@ -116,12 +128,12 @@ public class DialogActivity extends Activity implements TaskDialogContract.View
|
|
|
task_entity.setRunTask(1);
|
|
|
setBtnState();
|
|
|
break;
|
|
|
- case 1:
|
|
|
- Bundle bundle = msg.getData();
|
|
|
- long total = bundle.getLong("total");
|
|
|
- long current = bundle.getLong("current");
|
|
|
+ case 1://下载中
|
|
|
+ if(msg.obj instanceof DownloadStatus){
|
|
|
+ DownloadStatus downloadStatus = (DownloadStatus) msg.obj;
|
|
|
+ start_task_tv.setText((int) (downloadStatus.getFileDownloadedSize()*100/downloadStatus.getFileTotalSize() ) + "%");
|
|
|
+ }
|
|
|
|
|
|
- start_task_tv.setText((int) (current*100/total));
|
|
|
break;
|
|
|
case 3://安装apk
|
|
|
|
|
|
@@ -130,10 +142,19 @@ public class DialogActivity extends Activity implements TaskDialogContract.View
|
|
|
start_task_tv.setText("开始试玩");
|
|
|
type = 1;
|
|
|
}else{
|
|
|
- PackageUtil.installApk(activity, downloadInfo.getFileSavePath()+"");
|
|
|
-
|
|
|
+// PackageUtil.installApk(activity, downLoadInfo.getMApkPath()+"");
|
|
|
+ start_task_tv.setText("开始安装");
|
|
|
+ type = 3;
|
|
|
}
|
|
|
break;
|
|
|
+ case 4://被删除,重新下载
|
|
|
+
|
|
|
+ setBtnState();
|
|
|
+ break;
|
|
|
+ case 5://被删除,重新下载
|
|
|
+
|
|
|
+ start_task_tv.setText("继续下载");
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
@@ -145,14 +166,15 @@ public class DialogActivity extends Activity implements TaskDialogContract.View
|
|
|
ButterKnife.bind(this);
|
|
|
EventBus.getDefault().register(this);
|
|
|
activity = this;
|
|
|
- intentService = new Intent(activity, KFDownloadServices.class);
|
|
|
+
|
|
|
+ mDownloadTaskService = new DownloadTaskService(this);
|
|
|
+ mDownloadTaskService.restoreDownloadTaskStatus();
|
|
|
+
|
|
|
initViews();
|
|
|
initDatas();
|
|
|
- doFiler();
|
|
|
}
|
|
|
|
|
|
private void initDatas() {
|
|
|
- downloadManager = DownloadManager.getInstance();
|
|
|
webview.loadUrl(task_entity.getBoot_address());
|
|
|
Glide.with(this)
|
|
|
.load(task_entity.getIcon())
|
|
|
@@ -162,8 +184,6 @@ public class DialogActivity extends Activity implements TaskDialogContract.View
|
|
|
dialogItemSizeTv.setText( task_entity.getPackage_size() + "M");
|
|
|
isDownLoad = PackageUtil.isAppInstalled(SheepApp.mContext, task_entity.getPackage_names());
|
|
|
|
|
|
- isHaveLoad();
|
|
|
-// downLoadApk();
|
|
|
|
|
|
setBtnState();
|
|
|
|
|
|
@@ -242,22 +262,30 @@ public class DialogActivity extends Activity implements TaskDialogContract.View
|
|
|
break;
|
|
|
case 2://开始下载
|
|
|
// downLoadApk();
|
|
|
- if(!isStartPause){
|
|
|
+ if(downLoadInfo.getMStatus()!= 2){
|
|
|
if(NetUtil.isMobile(activity)){
|
|
|
// DialogAccountAbnormal.showDialog(activity,null, "当前网络处于非WIFI状态,确定下载吗?", "取消", "确定" ).show();
|
|
|
Jump2View.getInstance().goNoticeAct(activity, null);
|
|
|
return;
|
|
|
}
|
|
|
- startFiler();
|
|
|
+ //Todo 合并下载模块t
|
|
|
+// startFiler();
|
|
|
+ FileDownloader.start(task_entity.getDownload_link()+"");
|
|
|
}else {
|
|
|
FileDownloader.pause(task_entity.getDownload_link());
|
|
|
}
|
|
|
- isStartPause = !isStartPause;
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 3://开始安装
|
|
|
- PackageUtil.installApk(activity, downloadInfo.getFileSavePath()+"");
|
|
|
+ isDownLoad = PackageUtil.isAppInstalled(SheepApp.mContext, task_entity.getPackage_names());
|
|
|
+ if(isDownLoad){
|
|
|
+ buttonStr = "开始试玩";
|
|
|
+ type = 1;
|
|
|
+ toTestPlay();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ PackageUtil.installApk(activity, downLoadInfo.getMApkPath()+"");
|
|
|
break;
|
|
|
case 4:
|
|
|
Jump2View.getInstance()
|
|
|
@@ -269,43 +297,6 @@ public class DialogActivity extends Activity implements TaskDialogContract.View
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- /**
|
|
|
- * 判断apk是否下载过
|
|
|
- */
|
|
|
- private DownloadInfo isHaveLoad(){
|
|
|
- if (task_entity != null) {
|
|
|
- ClassFileHelper.getInstance().createSDDirection();
|
|
|
- File mApkPath = new File(ClassFileHelper.DIR, task_entity.getTask_name() + ClassFileHelper.FILE_SUFFIX);
|
|
|
- downloadInfo = MyDbManager.getInstance().dbFindDownLoad(task_entity.getTask_name(), mApkPath.getAbsolutePath());
|
|
|
- if (!mApkPath.exists()) {
|
|
|
- downloadInfo = new DownloadInfo();
|
|
|
- downloadInfo.setUrl(task_entity.getDownload_link());
|
|
|
- downloadInfo.setAutoRename(false);
|
|
|
- downloadInfo.setAutoResume(true);
|
|
|
- downloadInfo.setLabel(task_entity.getTask_name());
|
|
|
- downloadInfo.setFileSavePath(mApkPath.getAbsolutePath());
|
|
|
- downloadInfo.setIcon(task_entity.getIcon());
|
|
|
- downloadInfo.setState(DownloadState.STARTED);
|
|
|
- downloadInfo.setPkgName(task_entity.getPackage_names());
|
|
|
- MyDbManager.getInstance().saveOrUpdateUser(downloadInfo);//保存到数据库
|
|
|
- }else if (downloadInfo == null){
|
|
|
- downloadInfo = new DownloadInfo();
|
|
|
- downloadInfo.setUrl(task_entity.getDownload_link());
|
|
|
- downloadInfo.setAutoRename(false);
|
|
|
- downloadInfo.setAutoResume(true);
|
|
|
- downloadInfo.setLabel(task_entity.getTask_name());
|
|
|
- downloadInfo.setFileSavePath(mApkPath.getAbsolutePath());
|
|
|
- downloadInfo.setIcon(task_entity.getIcon());
|
|
|
- downloadInfo.setState(DownloadState.FINISHED);
|
|
|
- downloadInfo.setPkgName(task_entity.getPackage_names());
|
|
|
- MyDbManager.getInstance().saveOrUpdateUser(downloadInfo);//保存到数据库
|
|
|
- }else{
|
|
|
- downloadInfo.setState(DownloadState.FINISHED);
|
|
|
- }
|
|
|
- }
|
|
|
- return downloadInfo;
|
|
|
- }
|
|
|
/**
|
|
|
* 去试玩
|
|
|
*/
|
|
|
@@ -317,6 +308,14 @@ public class DialogActivity extends Activity implements TaskDialogContract.View
|
|
|
* 按钮状态
|
|
|
*/
|
|
|
private void setBtnState(){
|
|
|
+ downLoadInfo = mDownloadTaskService.getDownloadTaskByUrl(task_entity.getDownload_link());
|
|
|
+ if(downLoadInfo == null){
|
|
|
+ CommonUtil.getInstance()
|
|
|
+ .addNewDownloadTask(mDownloadTaskService, task_entity.getTask_name(), task_entity.getDownload_link(), task_entity.getPackage_names(),
|
|
|
+ Build.VERSION.SDK_INT, task_entity.getIcon(), task_entity.getPackage_size(),task_entity.getId(), 1);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
type = 0;
|
|
|
if(task_entity.getRunTask() == 0){//开始任务
|
|
|
buttonStr = "开始任务";
|
|
|
@@ -329,12 +328,33 @@ public class DialogActivity extends Activity implements TaskDialogContract.View
|
|
|
if(isDownLoad){
|
|
|
buttonStr = "开始试玩";
|
|
|
type = 1;
|
|
|
- }else if(downloadInfo.getState() ==DownloadState.FINISHED ){
|
|
|
- buttonStr = "开始安装";
|
|
|
- type = 3;
|
|
|
- }else if(downloadInfo.getState() ==DownloadState.STOPPED){
|
|
|
- buttonStr = "继续下载";
|
|
|
- type = 2;
|
|
|
+ }else if(mDownloadTaskService.isDownloadExists(task_entity.getDownload_link())){
|
|
|
+ //status 0 init 1 fail 2 donwloading 3 finish 4 paused 5 delete
|
|
|
+ switch (downLoadInfo.getMStatus()){
|
|
|
+ case 2:
|
|
|
+ buttonStr = "";
|
|
|
+ type = 2;
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ if(TextUtils.isEmpty(downLoadInfo.getMApkPath())){
|
|
|
+ buttonStr = "开始下载";
|
|
|
+ type = 2;
|
|
|
+ }else{
|
|
|
+ buttonStr = "开始安装";
|
|
|
+ type = 3;
|
|
|
+ }
|
|
|
+
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ buttonStr = "继续下载";
|
|
|
+ type = 2;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ buttonStr = "开始下载";
|
|
|
+ type = 2;
|
|
|
+
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
else {
|
|
|
buttonStr = "开始下载";
|
|
|
@@ -400,121 +420,60 @@ public class DialogActivity extends Activity implements TaskDialogContract.View
|
|
|
@Override
|
|
|
protected void onDestroy() {
|
|
|
super.onDestroy();
|
|
|
- unFiler();
|
|
|
EventBus.getDefault().unregister(this);
|
|
|
}
|
|
|
|
|
|
- /*----------------------------*/
|
|
|
- OnFileDownloadStatusListener onFileDownloadStatusListener = new OnFileDownloadStatusListener() {
|
|
|
- @Override
|
|
|
- public void onFileDownloadStatusWaiting(DownloadFileInfo downloadFileInfo) {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onFileDownloadStatusPreparing(DownloadFileInfo downloadFileInfo) {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onFileDownloadStatusPrepared(DownloadFileInfo downloadFileInfo) {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onFileDownloadStatusDownloading(DownloadFileInfo downloadFileInfo, float downloadSpeed, long
|
|
|
- remainingTime) {
|
|
|
- // 正在下载,downloadSpeed为当前下载速度,单位KB/s,remainingTime为预估的剩余时间,单位秒
|
|
|
- Log.e("tDownloadedSizeLong---",downloadFileInfo.getDownloadedSizeLong()+"");
|
|
|
- Log.e("getFileSizeLong---",downloadFileInfo.getFileSizeLong()+"");
|
|
|
- Log.e("getFileSizeLong---",(int)(downloadFileInfo.getDownloadedSizeLong()*100 /downloadFileInfo.getFileSizeLong()) + "%"+"");
|
|
|
- start_task_tv.setText((int)(downloadFileInfo.getDownloadedSizeLong() * 100 /downloadFileInfo.getFileSizeLong() )+ "%");
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onFileDownloadStatusPaused(DownloadFileInfo downloadFileInfo) {
|
|
|
- start_task_tv.setText("继续下载");
|
|
|
- Log.e("DownloadStatusPaused---",downloadFileInfo.getDownloadedSizeLong()+","+downloadFileInfo.getFileSizeLong());
|
|
|
- if(downloadInfo != null)
|
|
|
- downloadInfo.setState(DownloadState.STOPPED);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onFileDownloadStatusCompleted(DownloadFileInfo downloadFileInfo) {
|
|
|
- if(downloadInfo != null)
|
|
|
- downloadInfo.setState(DownloadState.FINISHED);
|
|
|
- handler.sendEmptyMessage(3);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void onFileDownloadStatusFailed(String s, DownloadFileInfo downloadFileInfo, FileDownloadStatusFailReason fileDownloadStatusFailReason) {
|
|
|
-
|
|
|
- }
|
|
|
- };
|
|
|
- private OnDownloadFileChangeListener mOnDownloadFileChangeListener = new OnDownloadFileChangeListener() {
|
|
|
- @Override
|
|
|
- public void onDownloadFileCreated(DownloadFileInfo downloadFileInfo) {
|
|
|
- // 一个新下载文件被创建,也许你需要同步你自己的数据存储,比如在你的业务数据库中增加一条记录
|
|
|
- }
|
|
|
- @Override
|
|
|
- public void onDownloadFileUpdated(DownloadFileInfo downloadFileInfo, Type type) {
|
|
|
- // 一个下载文件被更新,也许你需要同步你自己的数据存储,比如在你的业务数据库中更新一条记录
|
|
|
- }
|
|
|
- @Override
|
|
|
- public void onDownloadFileDeleted(DownloadFileInfo downloadFileInfo) {
|
|
|
- // 一个下载文件被删除,也许你需要同步你自己的数据存储,比如在你的业务数据库中删除一条记录
|
|
|
- }
|
|
|
- };
|
|
|
- private void doFiler(){
|
|
|
- FileDownloader.registerDownloadStatusListener(onFileDownloadStatusListener);
|
|
|
- FileDownloader.registerDownloadFileChangeListener(mOnDownloadFileChangeListener);
|
|
|
-
|
|
|
- try{
|
|
|
-
|
|
|
-// intent.setAction("ITOP.MOBILE.SIMPLE.SERVICE.SENSORSERVICE");
|
|
|
- stopService(intentService);
|
|
|
- }catch (Exception e){
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
- private void unFiler(){
|
|
|
- FileDownloader.unregisterDownloadStatusListener(onFileDownloadStatusListener);
|
|
|
- FileDownloader.unregisterDownloadFileChangeListener(mOnDownloadFileChangeListener);
|
|
|
- try {
|
|
|
- startService(intentService);
|
|
|
- }catch (Exception e){
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
- private void startFiler(){
|
|
|
- ClassFileHelper.getInstance().createSDDirection();
|
|
|
-// File mApkPath = new File(ClassFileHelper.DIR, task_entity.getTask_name() + ClassFileHelper.FILE_SUFFIX);
|
|
|
- FileDownloader.detect(task_entity.getDownload_link(), new OnDetectBigUrlFileListener() {
|
|
|
- @Override
|
|
|
- public void onDetectNewDownloadFile(String url, String fileName, String saveDir, long fileSize) {
|
|
|
- // 如果有必要,可以改变文件名称fileName和下载保存的目录saveDir
|
|
|
- FileDownloader.createAndStart(url, ClassFileHelper.DIR, task_entity.getTask_name() + ClassFileHelper.FILE_SUFFIX);
|
|
|
- }
|
|
|
- @Override
|
|
|
- public void onDetectUrlFileExist(String url) {
|
|
|
- // 继续下载,自动会断点续传(如果服务器无法支持断点续传将从头开始下载)
|
|
|
- FileDownloader.start(url);
|
|
|
- }
|
|
|
- @Override
|
|
|
- public void onDetectUrlFileFailed(String url, DetectBigUrlFileFailReason failReason) {
|
|
|
- // 探测一个网络文件失败了,具体查看failReason
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
@Subscribe
|
|
|
public void onEventMainThread(BigEvent event){
|
|
|
switch (event.getEventTypes()){
|
|
|
case DIALOG_ACTIVITY_DOWNLOAD_FILE:
|
|
|
- isStartPause = !isStartPause;
|
|
|
- startFiler();
|
|
|
+ if(task_entity != null){
|
|
|
+ downLoadInfo = mDownloadTaskService.getDownloadTaskByUrl(task_entity.getDownload_link());
|
|
|
+ FileDownloader.start(task_entity.getDownload_link()+"");
|
|
|
+
|
|
|
+ }
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Subscribe
|
|
|
+ public void onEventMainThread(final DownloadStatus info) {
|
|
|
+ if(task_entity.getDownload_link().equals(info.getDownloadUrl())){
|
|
|
+ downLoadInfo = mDownloadTaskService.getDownloadTaskByUrl(task_entity.getDownload_link());
|
|
|
+ EventDownloadHandler.newInstance(this, new EventDownloadHandler.OnDownCallback() {
|
|
|
+ @Override
|
|
|
+ public void downloading(String url, Integer progress) {
|
|
|
+ Message message = new Message();
|
|
|
+ message.obj = info;
|
|
|
+ message.what = 1;
|
|
|
+ handler.sendMessage(message);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void downloadFinish(String downloadUrl) {
|
|
|
+ downLoadInfo.setMApkPath(info.getApkPath()+"");
|
|
|
+ downLoadInfo.setMStatus(3);
|
|
|
+ mDownloadTaskService.addDownloadTask(downLoadInfo);
|
|
|
+ handler.sendEmptyMessage(3);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void downloadPause(String downloadUrl) {
|
|
|
+ handler.sendEmptyMessage(5);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void downloadFail(String url) {
|
|
|
+
|
|
|
+ handler.sendEmptyMessage(5);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void downloadDelete(String downloadUrl) {
|
|
|
+ handler.sendEmptyMessage(4);
|
|
|
+ }
|
|
|
+ }).setmTag(activity.getClass().getCanonicalName()).handlDownloadResult(info);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|