|
|
@@ -3,8 +3,6 @@ package com.sheep.gamegroup.view.activity;
|
|
|
import android.app.Activity;
|
|
|
import android.os.Build;
|
|
|
import android.os.Bundle;
|
|
|
-import android.os.Handler;
|
|
|
-import android.os.Message;
|
|
|
import android.support.annotation.Nullable;
|
|
|
import android.support.annotation.RequiresApi;
|
|
|
import android.text.TextUtils;
|
|
|
@@ -18,12 +16,15 @@ import android.widget.TextView;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.arialyy.annotations.Download;
|
|
|
+import com.arialyy.aria.core.Aria;
|
|
|
+import com.arialyy.aria.core.download.DownloadTarget;
|
|
|
+import com.arialyy.aria.core.download.DownloadTask;
|
|
|
+import com.arialyy.aria.core.inf.IEntity;
|
|
|
import com.bumptech.glide.Glide;
|
|
|
import com.bumptech.glide.request.RequestOptions;
|
|
|
-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.sheep.gamegroup.di.components.DaggerTaskDialogComponent;
|
|
|
@@ -33,22 +34,22 @@ 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.MyListview;
|
|
|
-import com.sheep.gamegroup.util.NetUtil;
|
|
|
import com.sheep.gamegroup.util.UMConfigUtils;
|
|
|
import com.sheep.gamegroup.view.adapter.TaskStateAdapter;
|
|
|
import com.sheep.gamegroup.view.adapter.TryMakeMoneyAdp;
|
|
|
import com.sheep.jiuyan.samllsheep.R;
|
|
|
import com.sheep.jiuyan.samllsheep.SheepApp;
|
|
|
+import com.sheep.jiuyan.samllsheep.utils.ClassFileHelper;
|
|
|
import com.sheep.jiuyan.samllsheep.utils.G;
|
|
|
import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
|
|
|
|
|
|
+
|
|
|
import org.greenrobot.eventbus.EventBus;
|
|
|
-import org.greenrobot.eventbus.Subscribe;
|
|
|
|
|
|
+import java.io.File;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
|
|
|
@@ -58,7 +59,7 @@ import butterknife.BindView;
|
|
|
import butterknife.ButterKnife;
|
|
|
import butterknife.OnClick;
|
|
|
|
|
|
-;import static com.kfzs.duanduan.services.DownloadTaskService.STATUS_ING;
|
|
|
+import static com.sheep.jiuyan.samllsheep.utils.ClassFileHelper.DIR;
|
|
|
|
|
|
/**
|
|
|
* 弹框activity
|
|
|
@@ -99,79 +100,18 @@ public class DialogActivity extends Activity implements TaskDialogContract.View
|
|
|
@Inject
|
|
|
TaskDialogPresenter preference;
|
|
|
|
|
|
- Handler handler = new Handler(){
|
|
|
- @Override
|
|
|
- public void handleMessage(Message msg) {
|
|
|
- super.handleMessage(msg);
|
|
|
- switch (msg.what){
|
|
|
- case 0:
|
|
|
- task_entity.setRunTask(1);
|
|
|
- setBtnState();
|
|
|
- break;
|
|
|
- case 1://下载中
|
|
|
- if(msg.obj instanceof DownloadStatus){
|
|
|
- DownloadStatus downloadStatus = (DownloadStatus) msg.obj;
|
|
|
- start_task_tv.setText((int) (downloadStatus.getFileDownloadedSize()*100/downloadStatus.getFileTotalSize() ) + "%");
|
|
|
- }
|
|
|
-
|
|
|
- break;
|
|
|
- case 3://安装apk
|
|
|
-
|
|
|
- if(PackageUtil.isAppInstalled(activity, task_entity.getPackage_names())){
|
|
|
- if(task_entity.getTask_type() != 3){
|
|
|
- start_task_tv.setText("打开应用");
|
|
|
- }else {
|
|
|
- start_task_tv.setText("开始试玩");
|
|
|
- }
|
|
|
-
|
|
|
- type = 1;
|
|
|
- }
|
|
|
- else{
|
|
|
-// PackageUtil.installApk(activity, downLoadInfo.getMApkPath()+"");
|
|
|
- start_task_tv.setText("开始安装");
|
|
|
- type = 3;
|
|
|
- }
|
|
|
- new Thread(){
|
|
|
- @Override
|
|
|
- public void run() {
|
|
|
- super.run();
|
|
|
- try {
|
|
|
- JSONObject jsonObject = new JSONObject();
|
|
|
- jsonObject.put("device_id",DeviceUtil.getDeviceId(SheepApp.mContext)+"");
|
|
|
- jsonObject.put("id",downLoadInfo.getMGameID());
|
|
|
- NetUtil.getNetUtil().sendAppDownload(activity, jsonObject);
|
|
|
-
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
- }.start();
|
|
|
- break;
|
|
|
- case 4://被删除,重新下载
|
|
|
-
|
|
|
- setBtnState();
|
|
|
- break;
|
|
|
- case 5://被删除,重新下载
|
|
|
-
|
|
|
- start_task_tv.setText("继续下载");
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
@Override
|
|
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
|
|
super.onCreate(savedInstanceState);
|
|
|
setContentView(R.layout.download_item_dialog);
|
|
|
ButterKnife.bind(this);
|
|
|
- EventBus.getDefault().register(this);
|
|
|
activity = this;
|
|
|
|
|
|
- mDownloadTaskService = new DownloadTaskService(this);
|
|
|
- mDownloadTaskService.restoreDownloadTaskStatus();
|
|
|
-
|
|
|
initViews();
|
|
|
initDatas();
|
|
|
+ Aria.download(this).register();
|
|
|
+ mDownloadTaskService = new DownloadTaskService(this);
|
|
|
+ downLoadInfo = mDownloadTaskService.getDownloadTaskByUrl(task_entity);
|
|
|
}
|
|
|
|
|
|
private void initDatas() {
|
|
|
@@ -184,9 +124,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());
|
|
|
|
|
|
-
|
|
|
- setBtnState();
|
|
|
-
|
|
|
//Todo ok
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
jsonObject.put("id",task_entity.getRelease_task_id());
|
|
|
@@ -194,6 +131,12 @@ public class DialogActivity extends Activity implements TaskDialogContract.View
|
|
|
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ protected void onResume() {
|
|
|
+ super.onResume();
|
|
|
+ setBtnState();
|
|
|
+ }
|
|
|
+
|
|
|
private void initViews() {
|
|
|
|
|
|
task_entity = (TaskEty) getIntent().getSerializableExtra("task_entity");
|
|
|
@@ -248,6 +191,8 @@ public class DialogActivity extends Activity implements TaskDialogContract.View
|
|
|
* 开始任务或者下载游戏、试玩
|
|
|
*/
|
|
|
private void startStask() {
|
|
|
+ DownloadTarget task = Aria.download(this).load(task_entity.getDownload_link());
|
|
|
+ String filePath = DIR+ File.separator+task_entity.getPackage_names()+ ClassFileHelper.FILE_SUFFIX;
|
|
|
try{
|
|
|
switch (type){
|
|
|
case 0://开始任务
|
|
|
@@ -262,24 +207,17 @@ public class DialogActivity extends Activity implements TaskDialogContract.View
|
|
|
toTestPlay();
|
|
|
break;
|
|
|
case 2://开始下载
|
|
|
-// downLoadApk();
|
|
|
- if(downLoadInfo.getMStatus()!= STATUS_ING){
|
|
|
- if(NetUtil.isMobile(activity)){
|
|
|
-// DialogAccountAbnormal.showDialog(activity,null, "当前网络处于非WIFI状态,确定下载吗?", "取消", "确定" ).show();
|
|
|
- Jump2View.getInstance().goNoticeAct(activity, null);
|
|
|
- return;
|
|
|
- }
|
|
|
- //Todo 合并下载模块t
|
|
|
-// startFiler();
|
|
|
- mDownloadTaskService.start(downLoadInfo);
|
|
|
- start_task_tv.setText("下载中");
|
|
|
- }else {
|
|
|
- mDownloadTaskService.pause(downLoadInfo);
|
|
|
- type = 2;
|
|
|
+ if(task.getTaskState() == IEntity.STATE_RUNNING){
|
|
|
+ task.stop();
|
|
|
+ } else if(task.getTaskState() == IEntity.STATE_FAIL){
|
|
|
+ task.cancel(true);
|
|
|
+ task.reStart();
|
|
|
+ } else {
|
|
|
+ task.setFilePath(filePath);
|
|
|
+ task.start();
|
|
|
}
|
|
|
-
|
|
|
+ mDownloadTaskService.addDownloadTask(downLoadInfo);
|
|
|
break;
|
|
|
-
|
|
|
case 3://开始安装
|
|
|
isDownLoad = PackageUtil.isAppInstalled(SheepApp.mContext, task_entity.getPackage_names());
|
|
|
if(isDownLoad){
|
|
|
@@ -292,12 +230,12 @@ public class DialogActivity extends Activity implements TaskDialogContract.View
|
|
|
toTestPlay();
|
|
|
return;
|
|
|
}else if(!TextUtils.isEmpty(PackageUtil.isExistsFile(activity, task_entity.getPackage_names(), ""))){
|
|
|
- PackageUtil.installApk(activity, downLoadInfo.getMApkPath()+"");
|
|
|
+ PackageUtil.installApk(activity, filePath);
|
|
|
}else{
|
|
|
- downLoadInfo.setMStatus(4);
|
|
|
- downLoadInfo.setMDownloadTaskId(null);
|
|
|
+ task.resetState();
|
|
|
+ task.setFilePath(filePath);
|
|
|
+ task.start();
|
|
|
type = 2;
|
|
|
- startStask();
|
|
|
}
|
|
|
break;
|
|
|
case 4:
|
|
|
@@ -321,17 +259,6 @@ public class DialogActivity extends Activity implements TaskDialogContract.View
|
|
|
* 按钮状态
|
|
|
*/
|
|
|
private void setBtnState(){
|
|
|
- downLoadInfo = mDownloadTaskService.getDownloadTaskByUrl(task_entity.getDownload_link());
|
|
|
- if(downLoadInfo == null){
|
|
|
- downLoadInfo = 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.getAcceptedTaskId(), 1);
|
|
|
-
|
|
|
- }
|
|
|
-// if(downLoadInfo.getMGameID() == null || downLoadInfo.getMGameID() == 0){
|
|
|
-// downLoadInfo.setMGameID(task_entity.getAcceptedTaskId());
|
|
|
-// mDownloadTaskService.addDownloadTask(downLoadInfo);
|
|
|
-// }
|
|
|
type = 0;
|
|
|
if(task_entity.getRunTask() == 0){//开始任务
|
|
|
buttonStr = "开始任务";
|
|
|
@@ -345,38 +272,45 @@ public class DialogActivity extends Activity implements TaskDialogContract.View
|
|
|
if(isDownLoad && task_entity.getTask_type() != 3){
|
|
|
buttonStr = "开始试玩";
|
|
|
type = 1;
|
|
|
- }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;
|
|
|
+ } else {
|
|
|
+ type = 2;
|
|
|
+ DownloadTarget task = Aria.download(this).load(task_entity.getDownload_link());
|
|
|
+ String filePath = DIR+ File.separator+task_entity.getPackage_names()+ ClassFileHelper.FILE_SUFFIX;
|
|
|
+ int taskState = task.getTaskState();
|
|
|
+ switch (taskState){
|
|
|
+ case IEntity.STATE_RUNNING:
|
|
|
+ buttonStr = task.getPercent() +"%";
|
|
|
break;
|
|
|
- case 3:
|
|
|
- if(TextUtils.isEmpty(downLoadInfo.getMApkPath())){
|
|
|
- buttonStr = "开始下载";
|
|
|
- type = 2;
|
|
|
- }else{
|
|
|
+ case IEntity.STATE_STOP:
|
|
|
+ buttonStr = "继续下载";
|
|
|
+ break;
|
|
|
+// case IEntity.STATE_WAIT:
|
|
|
+// task.setFilePath(filePath);
|
|
|
+// task.start();
|
|
|
+// mDownloadTaskService.addDownloadTask(downLoadInfo);
|
|
|
+// buttonStr = task.getPercent() +"%";
|
|
|
+// break;
|
|
|
+ case IEntity.STATE_COMPLETE:
|
|
|
+ isDownLoad = PackageUtil.isAppInstalled(SheepApp.mContext, task_entity.getPackage_names());
|
|
|
+ if(isDownLoad){
|
|
|
+ buttonStr = "开始试玩";
|
|
|
+ type = 1;
|
|
|
+ }else if(!TextUtils.isEmpty(PackageUtil.isExistsFile(activity, task_entity.getPackage_names(), ""))){
|
|
|
buttonStr = "开始安装";
|
|
|
type = 3;
|
|
|
+ }else{
|
|
|
+ task.resetState();
|
|
|
+ buttonStr = "开始下载";
|
|
|
}
|
|
|
-
|
|
|
break;
|
|
|
- case 4:
|
|
|
- buttonStr = "继续下载";
|
|
|
- type = 2;
|
|
|
+ case IEntity.STATE_FAIL:
|
|
|
+ buttonStr = "下载失败";
|
|
|
break;
|
|
|
default:
|
|
|
buttonStr = "开始下载";
|
|
|
- type = 2;
|
|
|
-
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- else {
|
|
|
- buttonStr = "开始下载";
|
|
|
- type = 2;
|
|
|
- }
|
|
|
}
|
|
|
start_task_tv.setText(buttonStr);
|
|
|
}
|
|
|
@@ -390,7 +324,8 @@ public class DialogActivity extends Activity implements TaskDialogContract.View
|
|
|
try{
|
|
|
BaseMessage baseMessage = (BaseMessage) o;
|
|
|
if(baseMessage.getCode() == 200){
|
|
|
- handler.sendEmptyMessage(0);
|
|
|
+ task_entity.setRunTask(1);
|
|
|
+ setBtnState();
|
|
|
G.showToast("接收任务成功");
|
|
|
}
|
|
|
EventBus.getDefault().post(new BigEvent().setEventTypes(EventTypes.ONFRESH_TRYMAKEMANY_PAGE));
|
|
|
@@ -434,65 +369,63 @@ public class DialogActivity extends Activity implements TaskDialogContract.View
|
|
|
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- protected void onDestroy() {
|
|
|
- super.onDestroy();
|
|
|
- EventBus.getDefault().unregister(this);
|
|
|
+ @Download.onPre void onPre(DownloadTask task) {
|
|
|
+ if(task.getKey().equals(task_entity.getDownload_link())) {
|
|
|
+ start_task_tv.setText("准备下载中");
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
- @Subscribe
|
|
|
- public void onEventMainThread(BigEvent event){
|
|
|
- switch (event.getEventTypes()){
|
|
|
- case DIALOG_ACTIVITY_DOWNLOAD_FILE:
|
|
|
- if(task_entity != null){
|
|
|
- downLoadInfo = mDownloadTaskService.getDownloadTaskByUrl(task_entity.getDownload_link());
|
|
|
- mDownloadTaskService.start(downLoadInfo);
|
|
|
- start_task_tv.setText("下载中");
|
|
|
- }
|
|
|
- break;
|
|
|
+ @Download.onTaskStart void taskStart(DownloadTask task) {
|
|
|
+ if(task.getKey().equals(task_entity.getDownload_link())) {
|
|
|
+ start_task_tv.setText("开始下载中");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ @Download.onTaskResume void taskResume(DownloadTask task) {
|
|
|
+ if(task.getKey().equals(task_entity.getDownload_link())) {
|
|
|
+ start_task_tv.setText("恢复下载中");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //在这里处理任务执行中的状态,如进度进度条的刷新
|
|
|
+ @Download.onTaskRunning protected void running(DownloadTask task) {
|
|
|
+ if(task.getKey().equals(task_entity.getDownload_link())) {
|
|
|
+ int p = task.getPercent(); //任务进度百分比
|
|
|
+ mDownloadTaskService.setDownloadTaskPercent(p, task.getCurrentProgress()/1024d/1024d,task.getFileSize()/1024d/1024d,0,task.getKey());
|
|
|
+ String speed = task.getConvertSpeed(); //转换单位后的下载速度,单位转换需要在配置文件中打开
|
|
|
+ long speed1 = task.getSpeed(); //原始byte长度速度
|
|
|
+ start_task_tv.setText(p + "%");
|
|
|
+ System.out.println("Aria p " + p + ", speed = " + speed);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- @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);
|
|
|
- }
|
|
|
+ @Download.onTaskStop void taskStop(DownloadTask task) {
|
|
|
+ if(task.getKey().equals(task_entity.getDownload_link())) {
|
|
|
+ mDownloadTaskService.setDownloadTaskStatus(task.getKey(), DownloadTaskService.STATUS_PAUSE);
|
|
|
+ start_task_tv.setText("继续下载");
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
- public void downloadPause(String downloadUrl) {
|
|
|
- handler.sendEmptyMessage(5);
|
|
|
- }
|
|
|
+ @Download.onNoSupportBreakPoint void onNoSupportBreakPoint(DownloadTask task) {
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
- public void downloadFail(String url) {
|
|
|
- downLoadInfo.setMDownloadTaskId(null);
|
|
|
- downLoadInfo.setMStatus(1);
|
|
|
- mDownloadTaskService.addDownloadTask(downLoadInfo);
|
|
|
- handler.sendEmptyMessage(5);
|
|
|
- }
|
|
|
+ @Download.onTaskCancel void taskCancel(DownloadTask task) {
|
|
|
+ if(task.getKey().equals(task_entity.getDownload_link())) {
|
|
|
+ mDownloadTaskService.deleteDownloadTaskByDownloadUrl(task.getKey());
|
|
|
+ start_task_tv.setText("已经取消");
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- @Override
|
|
|
- public void downloadDelete(String downloadUrl) {
|
|
|
- handler.sendEmptyMessage(4);
|
|
|
- }
|
|
|
- }).setmTag(activity.getClass().getCanonicalName()).handlDownloadResult(info);
|
|
|
+ @Download.onTaskFail void taskFail(DownloadTask task) {
|
|
|
+ if(task.getKey().equals(task_entity.getDownload_link())) {
|
|
|
+ mDownloadTaskService.setDownloadTaskStatus(task.getKey(), DownloadTaskService.STATUS_FAIL);
|
|
|
+ start_task_tv.setText("下载失败");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Download.onTaskComplete void taskComplete(DownloadTask task) {
|
|
|
+ if(task.getKey().equals(task_entity.getDownload_link())) {
|
|
|
+ mDownloadTaskService.setDownloadTaskFinish(task.getKey(), task.getDownloadPath());
|
|
|
+ //在这里处理任务完成的状态
|
|
|
+ start_task_tv.setText("开始安装");
|
|
|
+ type = 3;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|