Przeglądaj źródła

下载框架由aria修改为okDownload

zengjiebin 7 lat temu
rodzic
commit
c733018ca0
31 zmienionych plików z 1145 dodań i 879 usunięć
  1. 8 7
      app/build.gradle
  2. 2 1
      app/src/main/java/com/sheep/gamegroup/event/EventTypes.java
  3. 50 6
      app/src/main/java/com/sheep/gamegroup/greendao/DDProviderHelper.java
  4. 2 2
      app/src/main/java/com/sheep/gamegroup/greendao/download/DaoMaster.java
  5. 16 2
      app/src/main/java/com/sheep/gamegroup/greendao/download/DownLoadInfo.java
  6. 16 2
      app/src/main/java/com/sheep/gamegroup/greendao/download/DownLoadInfoDao.java
  7. 58 39
      app/src/main/java/com/sheep/gamegroup/helper/DownloadHelper.java
  8. 2 2
      app/src/main/java/com/sheep/gamegroup/util/CertificationUtil.java
  9. 15 19
      app/src/main/java/com/sheep/gamegroup/util/CommonUtil.java
  10. 71 25
      app/src/main/java/com/sheep/gamegroup/util/DownloadUtil.java
  11. 14 0
      app/src/main/java/com/sheep/gamegroup/util/FileUtil.java
  12. 12 0
      app/src/main/java/com/sheep/gamegroup/util/Jump2View.java
  13. 146 0
      app/src/main/java/com/sheep/gamegroup/util/Md5Util.java
  14. 2 3
      app/src/main/java/com/sheep/gamegroup/util/SysAppUtil.java
  15. 2 2
      app/src/main/java/com/sheep/gamegroup/util/TestUtil.java
  16. 20 89
      app/src/main/java/com/sheep/gamegroup/util/WebviewJs.java
  17. 89 116
      app/src/main/java/com/sheep/gamegroup/view/activity/ActDownloadMgr.java
  18. 50 44
      app/src/main/java/com/sheep/gamegroup/view/activity/ActFindGame.java
  19. 48 44
      app/src/main/java/com/sheep/gamegroup/view/activity/ActFindInformation.java
  20. 2 2
      app/src/main/java/com/sheep/gamegroup/view/activity/ActInstallApkList.java
  21. 43 48
      app/src/main/java/com/sheep/gamegroup/view/activity/ActMain.java
  22. 73 68
      app/src/main/java/com/sheep/gamegroup/view/activity/ActPlayGameDetail.java
  23. 77 48
      app/src/main/java/com/sheep/gamegroup/view/activity/ActReservation.java
  24. 0 1
      app/src/main/java/com/sheep/gamegroup/view/activity/ActSheepApkList.java
  25. 74 116
      app/src/main/java/com/sheep/gamegroup/view/activity/TaskDetailAct.java
  26. 91 55
      app/src/main/java/com/sheep/gamegroup/view/fragment/FgtFindChild.java
  27. 0 2
      app/src/main/java/com/sheep/gamegroup/view/fragment/FgtGameAgencyRecharge.java
  28. 57 34
      app/src/main/java/com/sheep/gamegroup/view/fragment/FgtMyGame.java
  29. 14 6
      app/src/main/java/com/sheep/jiuyan/samllsheep/SheepApp.java
  30. 90 96
      app/src/main/java/com/sheep/jiuyan/samllsheep/service/DownloadService.java
  31. 1 0
      app/src/main/res/values/str_appstore_strings.xml

+ 8 - 7
app/build.gradle

@@ -23,7 +23,7 @@ android {
         flavorDimensions "versionCode"
         flavorDimensions "versionCode"
     }
     }
     greendao {
     greendao {
-        schemaVersion 11
+        schemaVersion 12
         targetGenDir 'src/main/java'
         targetGenDir 'src/main/java'
     }
     }
 //    compileOptions{
 //    compileOptions{
@@ -252,12 +252,6 @@ dependencies {
 
 
     //    implementation 'com.google.zxing:core:3.3.0'
     //    implementation 'com.google.zxing:core:3.3.0'
     implementation project(':ucrop')
     implementation project(':ucrop')
-    implementation('com.arialyy.aria:aria-core:3.3.16') {
-        exclude group: 'com.android.support'
-    }
-//    implementation project(':Aria')
-
-    annotationProcessor 'com.arialyy.aria:aria-compiler:3.3.16'
     implementation 'com.sunfusheng:marqueeview:1.3.3'
     implementation 'com.sunfusheng:marqueeview:1.3.3'
     implementation files('libs/alipaySdk-20170922.jar')
     implementation files('libs/alipaySdk-20170922.jar')
     //极光
     //极光
@@ -281,6 +275,13 @@ dependencies {
     implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-14'
     implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-14'
 
 
     implementation 'org.greenrobot:greendao:3.2.2'
     implementation 'org.greenrobot:greendao:3.2.2'
+
+    // core
+    implementation "com.liulishuo.okdownload:okdownload:1.0.4"
+    // provide sqlite to store breakpoints
+    implementation "com.liulishuo.okdownload:sqlite:1.0.4"
+    // provide okhttp to connect to backend
+    implementation "com.liulishuo.okdownload:okhttp:1.0.4"
 }
 }
 
 
 static def releaseTime() {
 static def releaseTime() {

+ 2 - 1
app/src/main/java/com/sheep/gamegroup/event/EventTypes.java

@@ -31,7 +31,8 @@ public enum EventTypes {
     GUIDE_NEXT,//引导页面下一步操作
     GUIDE_NEXT,//引导页面下一步操作
     DELETE_GAME_ACCOUNT_REFRESH,//游戏删除账号,刷新界面
     DELETE_GAME_ACCOUNT_REFRESH,//游戏删除账号,刷新界面
     GENERATION_ACCOUNT_REFRESH,//游戏代充,刷新界面
     GENERATION_ACCOUNT_REFRESH,//游戏代充,刷新界面
-    GENERATION_ACCOUNT_REFRESH_ADAPTER,//游戏代充,刷新界面(下载)
+    DOWNLOAD_START,//下载开始
+    DOWNLOAD_RUNNING,//游戏代充,刷新界面(下载)
     DOWNLOAD_STOP,//下载暂停
     DOWNLOAD_STOP,//下载暂停
     DOWNLOAD_COMPLETE,//下载完成
     DOWNLOAD_COMPLETE,//下载完成
     DOWNLOAD_FAIL,//下载失败
     DOWNLOAD_FAIL,//下载失败

+ 50 - 6
app/src/main/java/com/sheep/gamegroup/greendao/DDProviderHelper.java

@@ -13,6 +13,7 @@ import com.sheep.gamegroup.greendao.download.ProcessRecordDao;
 import com.sheep.gamegroup.greendao.download.ScreenShotRecord;
 import com.sheep.gamegroup.greendao.download.ScreenShotRecord;
 import com.sheep.gamegroup.greendao.download.ScreenShotRecordDao;
 import com.sheep.gamegroup.greendao.download.ScreenShotRecordDao;
 import com.sheep.gamegroup.util.DataUtil;
 import com.sheep.gamegroup.util.DataUtil;
+import com.sheep.gamegroup.util.DownloadUtil;
 import com.sheep.jiuyan.samllsheep.service.AutoCheckService;
 import com.sheep.jiuyan.samllsheep.service.AutoCheckService;
 
 
 import java.util.List;
 import java.util.List;
@@ -183,19 +184,41 @@ public class DDProviderHelper {
      * @param downloadUrl
      * @param downloadUrl
      * @param apkPath
      * @param apkPath
      */
      */
-    public void setDownloadTaskFinish(Context ctx, String downloadUrl, String apkPath) {
+    public DownLoadInfo setDownloadTaskFinish(Context ctx, String downloadUrl, String apkPath) {
         DownLoadInfo downloadTask = getDownloadTask(ctx, downloadUrl);
         DownLoadInfo downloadTask = getDownloadTask(ctx, downloadUrl);
         if (downloadTask != null) {
         if (downloadTask != null) {
             downloadTask.setMApkPath(apkPath);
             downloadTask.setMApkPath(apkPath);
-            downloadTask.setMStatus(3);//DownloadTaskService.STATUS_FINISH
+            downloadTask.setMStatus(DownloadUtil.STATUS_FINISH);//DownloadTaskService.STATUS_FINISH
             getDaossion(ctx).getDownLoadInfoDao().update(downloadTask);
             getDaossion(ctx).getDownLoadInfoDao().update(downloadTask);
         }
         }
+        return downloadTask;
     }
     }
 
 
     /**
     /**
      * 更新任务状态
      * 更新任务状态
      *
      *
      * @param ctx
      * @param ctx
+     * @param downloadedSize
+     * @param downloadTaskId
+     * @param downloadUrl
+     */
+    public DownLoadInfo updateDownloadPercent(Context ctx, double downloadedSize, String averageSpeed, int downloadTaskId, String downloadUrl, int state) {
+        DownLoadInfo downloadTask = getDownloadTask(ctx, downloadUrl);
+        if (downloadTask != null) {
+            int percent = (int) (downloadedSize * 100 / downloadTask.getMTotalSize() );
+            downloadTask.setMPercent(percent);
+            downloadTask.setAverageSpeed(averageSpeed);
+            downloadTask.setMDownloadedSize(downloadedSize);
+            downloadTask.setMDownloadTaskId(downloadTaskId);
+            downloadTask.setMStatus(state);//2下载中
+            updateDownload(ctx, downloadTask);
+        }
+        return downloadTask;
+    }
+    /**
+     * 更新任务状态
+     *
+     * @param ctx
      * @param percent
      * @param percent
      * @param downloadedSize
      * @param downloadedSize
      * @param totalSize
      * @param totalSize
@@ -216,24 +239,45 @@ public class DDProviderHelper {
 
 
 
 
     /**
     /**
+     * 添加文件总长度
+     *
+     * @param ctx
+     * @param downloadUrl
+     * @param totalLength
+     */
+    public DownLoadInfo setDownloadTaskTotal(Context ctx, String downloadUrl, double totalLength) {
+        try {
+            DownLoadInfo downloadTask = getDownloadTask(ctx, downloadUrl);
+            if (downloadTask != null) {
+                downloadTask.setMTotalSize(totalLength);
+                updateDownload(ctx, downloadTask);
+                return downloadTask;
+            }
+            return null;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+    /**
      * 改变任务状态
      * 改变任务状态
      *
      *
      * @param ctx
      * @param ctx
      * @param downloadUrl
      * @param downloadUrl
      * @param status
      * @param status
      */
      */
-    public boolean setDownloadTaskStatus(Context ctx, String downloadUrl, int status) {
+    public DownLoadInfo setDownloadTaskStatus(Context ctx, String downloadUrl, int status) {
         try {
         try {
             DownLoadInfo downloadTask = getDownloadTask(ctx, downloadUrl);
             DownLoadInfo downloadTask = getDownloadTask(ctx, downloadUrl);
             if (downloadTask != null) {
             if (downloadTask != null) {
                 downloadTask.setMStatus(status);
                 downloadTask.setMStatus(status);
                 updateDownload(ctx, downloadTask);
                 updateDownload(ctx, downloadTask);
-                return true;
+                return downloadTask;
             }
             }
-            return false;
+            return null;
         } catch (Exception e) {
         } catch (Exception e) {
             e.printStackTrace();
             e.printStackTrace();
-            return false;
+            return null;
         }
         }
     }
     }
 
 

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/greendao/download/DaoMaster.java

@@ -14,10 +14,10 @@ import org.greenrobot.greendao.identityscope.IdentityScopeType;
 
 
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
 /**
 /**
- * Master of DAO (schema version 11): knows all DAOs.
+ * Master of DAO (schema version 12): knows all DAOs.
  */
  */
 public class DaoMaster extends AbstractDaoMaster {
 public class DaoMaster extends AbstractDaoMaster {
-    public static final int SCHEMA_VERSION = 11;
+    public static final int SCHEMA_VERSION = 12;
 
 
     /** Creates underlying database table using DAOs. */
     /** Creates underlying database table using DAOs. */
     public static void createAllTables(Database db, boolean ifNotExists) {
     public static void createAllTables(Database db, boolean ifNotExists) {

+ 16 - 2
app/src/main/java/com/sheep/gamegroup/greendao/download/DownLoadInfo.java

@@ -120,6 +120,11 @@ public class DownLoadInfo implements Serializable{
      */
      */
     @Property(nameInDb = "where_from")
     @Property(nameInDb = "where_from")
     private int whereFrom;
     private int whereFrom;
+    /**
+     * 下载速度
+     */
+    @Property(nameInDb = "average_speed")
+    private String averageSpeed;
 
 
     public int getWhereFrom() {
     public int getWhereFrom() {
         return whereFrom;
         return whereFrom;
@@ -249,12 +254,20 @@ public class DownLoadInfo implements Serializable{
         this.mChannelDownloadUrl = mChannelDownloadUrl;
         this.mChannelDownloadUrl = mChannelDownloadUrl;
     }
     }
 
 
-    @Generated(hash = 1556387369)
+    public String getAverageSpeed() {
+        return this.averageSpeed;
+    }
+
+    public void setAverageSpeed(String averageSpeed) {
+        this.averageSpeed = averageSpeed;
+    }
+
+    @Generated(hash = 601502121)
     public DownLoadInfo(Long mId, Long mCreateTime, Integer mDownloadTaskId,
     public DownLoadInfo(Long mId, Long mCreateTime, Integer mDownloadTaskId,
             String mGameName, String mIconUrl, Integer mPercent, @NotNull Integer mGameID,
             String mGameName, String mIconUrl, Integer mPercent, @NotNull Integer mGameID,
             Double mDownloadedSize, Double mTotalSize, Integer mStatus, String mDownloadUrl,
             Double mDownloadedSize, Double mTotalSize, Integer mStatus, String mDownloadUrl,
             String mChannelDownloadUrl, String mPackageName, Integer mVersionCode,
             String mChannelDownloadUrl, String mPackageName, Integer mVersionCode,
-            String mApkPath, int whereFrom) {
+            String mApkPath, int whereFrom, String averageSpeed) {
         this.mId = mId;
         this.mId = mId;
         this.mCreateTime = mCreateTime;
         this.mCreateTime = mCreateTime;
         this.mDownloadTaskId = mDownloadTaskId;
         this.mDownloadTaskId = mDownloadTaskId;
@@ -271,6 +284,7 @@ public class DownLoadInfo implements Serializable{
         this.mVersionCode = mVersionCode;
         this.mVersionCode = mVersionCode;
         this.mApkPath = mApkPath;
         this.mApkPath = mApkPath;
         this.whereFrom = whereFrom;
         this.whereFrom = whereFrom;
+        this.averageSpeed = averageSpeed;
     }
     }
 
 
     @Generated(hash = 1743687477)
     @Generated(hash = 1743687477)

+ 16 - 2
app/src/main/java/com/sheep/gamegroup/greendao/download/DownLoadInfoDao.java

@@ -38,6 +38,7 @@ public class DownLoadInfoDao extends AbstractDao<DownLoadInfo, Long> {
         public final static Property MVersionCode = new Property(13, Integer.class, "mVersionCode", false, "version_code");
         public final static Property MVersionCode = new Property(13, Integer.class, "mVersionCode", false, "version_code");
         public final static Property MApkPath = new Property(14, String.class, "mApkPath", false, "apk_path");
         public final static Property MApkPath = new Property(14, String.class, "mApkPath", false, "apk_path");
         public final static Property WhereFrom = new Property(15, int.class, "whereFrom", false, "where_from");
         public final static Property WhereFrom = new Property(15, int.class, "whereFrom", false, "where_from");
+        public final static Property AverageSpeed = new Property(16, String.class, "averageSpeed", false, "average_speed");
     }
     }
 
 
 
 
@@ -68,7 +69,8 @@ public class DownLoadInfoDao extends AbstractDao<DownLoadInfo, Long> {
                 "\"package_name\" TEXT," + // 12: mPackageName
                 "\"package_name\" TEXT," + // 12: mPackageName
                 "\"version_code\" INTEGER," + // 13: mVersionCode
                 "\"version_code\" INTEGER," + // 13: mVersionCode
                 "\"apk_path\" TEXT," + // 14: mApkPath
                 "\"apk_path\" TEXT," + // 14: mApkPath
-                "\"where_from\" INTEGER NOT NULL );"); // 15: whereFrom
+                "\"where_from\" INTEGER NOT NULL ," + // 15: whereFrom
+                "\"average_speed\" TEXT);"); // 16: averageSpeed
     }
     }
 
 
     /** Drops the underlying database table. */
     /** Drops the underlying database table. */
@@ -152,6 +154,11 @@ public class DownLoadInfoDao extends AbstractDao<DownLoadInfo, Long> {
             stmt.bindString(15, mApkPath);
             stmt.bindString(15, mApkPath);
         }
         }
         stmt.bindLong(16, entity.getWhereFrom());
         stmt.bindLong(16, entity.getWhereFrom());
+ 
+        String averageSpeed = entity.getAverageSpeed();
+        if (averageSpeed != null) {
+            stmt.bindString(17, averageSpeed);
+        }
     }
     }
 
 
     @Override
     @Override
@@ -229,6 +236,11 @@ public class DownLoadInfoDao extends AbstractDao<DownLoadInfo, Long> {
             stmt.bindString(15, mApkPath);
             stmt.bindString(15, mApkPath);
         }
         }
         stmt.bindLong(16, entity.getWhereFrom());
         stmt.bindLong(16, entity.getWhereFrom());
+ 
+        String averageSpeed = entity.getAverageSpeed();
+        if (averageSpeed != null) {
+            stmt.bindString(17, averageSpeed);
+        }
     }
     }
 
 
     @Override
     @Override
@@ -254,7 +266,8 @@ public class DownLoadInfoDao extends AbstractDao<DownLoadInfo, Long> {
             cursor.isNull(offset + 12) ? null : cursor.getString(offset + 12), // mPackageName
             cursor.isNull(offset + 12) ? null : cursor.getString(offset + 12), // mPackageName
             cursor.isNull(offset + 13) ? null : cursor.getInt(offset + 13), // mVersionCode
             cursor.isNull(offset + 13) ? null : cursor.getInt(offset + 13), // mVersionCode
             cursor.isNull(offset + 14) ? null : cursor.getString(offset + 14), // mApkPath
             cursor.isNull(offset + 14) ? null : cursor.getString(offset + 14), // mApkPath
-            cursor.getInt(offset + 15) // whereFrom
+            cursor.getInt(offset + 15), // whereFrom
+            cursor.isNull(offset + 16) ? null : cursor.getString(offset + 16) // averageSpeed
         );
         );
         return entity;
         return entity;
     }
     }
@@ -277,6 +290,7 @@ public class DownLoadInfoDao extends AbstractDao<DownLoadInfo, Long> {
         entity.setMVersionCode(cursor.isNull(offset + 13) ? null : cursor.getInt(offset + 13));
         entity.setMVersionCode(cursor.isNull(offset + 13) ? null : cursor.getInt(offset + 13));
         entity.setMApkPath(cursor.isNull(offset + 14) ? null : cursor.getString(offset + 14));
         entity.setMApkPath(cursor.isNull(offset + 14) ? null : cursor.getString(offset + 14));
         entity.setWhereFrom(cursor.getInt(offset + 15));
         entity.setWhereFrom(cursor.getInt(offset + 15));
+        entity.setAverageSpeed(cursor.isNull(offset + 16) ? null : cursor.getString(offset + 16));
      }
      }
     
     
     @Override
     @Override

+ 58 - 39
app/src/main/java/com/sheep/gamegroup/helper/DownloadHelper.java

@@ -5,17 +5,20 @@ import android.text.TextUtils;
 import android.view.View;
 import android.view.View;
 import android.widget.TextView;
 import android.widget.TextView;
 
 
-import com.arialyy.aria.core.Aria;
-import com.arialyy.aria.core.download.DownloadTarget;
-import com.arialyy.aria.core.inf.IEntity;
+import com.liulishuo.okdownload.DownloadTask;
+import com.liulishuo.okdownload.OkDownload;
+import com.liulishuo.okdownload.StatusUtil;
 import com.sheep.gamegroup.event.BigEvent;
 import com.sheep.gamegroup.event.BigEvent;
 import com.sheep.gamegroup.event.EventTypes;
 import com.sheep.gamegroup.event.EventTypes;
 import com.sheep.gamegroup.greendao.download.DownLoadInfo;
 import com.sheep.gamegroup.greendao.download.DownLoadInfo;
 import com.sheep.gamegroup.util.DownloadUtil;
 import com.sheep.gamegroup.util.DownloadUtil;
 import com.kfzs.duanduan.utils.ApkUtils;
 import com.kfzs.duanduan.utils.ApkUtils;
 import com.sheep.gamegroup.model.api.IDownload;
 import com.sheep.gamegroup.model.api.IDownload;
+import com.sheep.gamegroup.util.Jump2View;
+import com.sheep.gamegroup.util.UMConfigUtils;
 import com.sheep.gamegroup.view.activity.TaskDetailAct;
 import com.sheep.gamegroup.view.activity.TaskDetailAct;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
 import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
 
 
@@ -43,10 +46,10 @@ public class DownloadHelper {
         updateDownloadTaskView(activity, iTask, down_tv, callBack,0);
         updateDownloadTaskView(activity, iTask, down_tv, callBack,0);
     }
     }
     public void updateDownloadTaskView(final Activity activity, final IDownload iTask, final TextView down_tv, final Action1<Object> callBack,int type) {
     public void updateDownloadTaskView(final Activity activity, final IDownload iTask, final TextView down_tv, final Action1<Object> callBack,int type) {
-        if(mDownloadTaskService == null){
-            mDownloadTaskService = new DownloadUtil(activity);
+        if(downloadUtil == null){
+            downloadUtil = new DownloadUtil(activity);
         }
         }
-        TaskDetailAct.setBtnStr(iTask, mDownloadTaskService, new Action1<Object>() {
+        TaskDetailAct.setBtnStr(iTask, downloadUtil, new Action1<Object>() {
             @Override
             @Override
             public void call(Object o) {
             public void call(Object o) {
                 if(o instanceof Integer){
                 if(o instanceof Integer){
@@ -72,64 +75,80 @@ public class DownloadHelper {
         }
         }
     }
     }
 
 
-    private DownloadUtil mDownloadTaskService;
-    private DownloadTarget downloadTarget;
+    private DownloadUtil downloadUtil;
 
 
     /**
     /**
      * @param activity
      * @param activity
-     * @param task
+     * @param download
      *   //下载应用
      *   //下载应用
      */
      */
-    private void downloadApp(Activity activity, IDownload task) {
+    private void downloadApp(Activity activity, IDownload download) {
         switch (downLoadType){
         switch (downLoadType){
             case DownloadUtil.STATUS_INIT://可以下载
             case DownloadUtil.STATUS_INIT://可以下载
-                if(TextUtils.isEmpty(task.getDownload_link()) || !task.getDownload_link().contains("http")){
+                final DownloadTask task;
+                if (TextUtils.isEmpty(download.getDownload_link()) || !download.getDownload_link().contains("http")) {
                     G.showToast(R.string.error_download_link);
                     G.showToast(R.string.error_download_link);
                     return;
                     return;
                 }
                 }
-                this.downloadTarget = Aria.download(activity).load(task.getDownload_link());
-                final DownLoadInfo downLoadInfo = mDownloadTaskService.getDownloadTaskByUrl(task);
-                if(this.downloadTarget != null) {
-                    if (this.downloadTarget.getTaskState() == IEntity.STATE_RUNNING) {
-                        this.downloadTarget.stop();
-                    } else if (this.downloadTarget.getTaskState() == IEntity.STATE_FAIL) {
-                        this.downloadTarget.cancel(true);
-                        this.downloadTarget.removeRecord();
-                    } else {
-                        mDownloadTaskService.start(downLoadInfo);
-                    }
-                    new Thread(new Runnable() {
-                        @Override
-                        public void run() {
-                            if(mDownloadTaskService.addDownloadTask(downLoadInfo)){//添加数据到数据库,可以在下载管理中看到
-                                //发送红点信息
-                                EventBus.getDefault().post(BigEvent.get().setEventTypes(EventTypes.TIPS_DOWN_ICON));
+                task = DownloadUtil.getTask(download);
+                final StatusUtil.Status statusOnStore = StatusUtil.getStatus(task);
+                final DownLoadInfo downLoadInfo = downloadUtil.getDownloadTaskByUrl(download);
+                switch (statusOnStore) {
+                    case RUNNING:
+                    case PENDING://等待的
+                        OkDownload.with().downloadDispatcher().cancel(task);
+                        break;
+                    case IDLE://空闲的
+                    case UNKNOWN:
+                        downloadUtil.start(downLoadInfo);
+                        Jump2View.getInstance().startDownloadService(activity, downLoadInfo);
+                        break;
+                    case COMPLETED://有可能之前已经下载完成,但是数据库里已经没有数据了,这时只需要修改状态
+                        if(task.getFile() != null) {
+                            if(downloadUtil.checkFinish(downLoadInfo)){//检查文件是否真的完成
+                                DownLoadInfo newDownloadInfo = downloadUtil.setDownloadTaskFinish(task.getUrl(), task.getFile().getAbsolutePath());
+                                downLoadType = DownloadUtil.STATUS_FINISH;
+                                EventBus.getDefault().post(new BigEvent().setEventTypes(EventTypes.DOWNLOAD_COMPLETE).setData(newDownloadInfo));
+                            } else {//重新开始下载
+                                downloadUtil.delete(downLoadInfo);
+                                downloadUtil.start(downloadUtil.getDownloadTaskByUrl(download));
+                                downloadUtil.setDownloadTaskStatus(download.getDownload_link(), DownloadUtil.STATUS_INIT);
+                                downLoadType = DownloadUtil.STATUS_INIT;
                             }
                             }
                         }
                         }
-                    }).start();
+                        break;
                 }
                 }
+                new Thread(new Runnable() {
+                    @Override
+                    public void run() {
+                        if (downloadUtil.addDownloadTask(downLoadInfo)) {
+                            //发送红点信息
+                            EventBus.getDefault().post(BigEvent.get().setEventTypes(EventTypes.TIPS_DOWN_ICON));
+                        }
+                    }
+                }).start();
+                UMConfigUtils.onEvent(UMConfigUtils.Event.TASK_DOWNLOAD);
                 break;
                 break;
             case DownloadUtil.STATUS_FINISH://已经下载完成,可以安装
             case DownloadUtil.STATUS_FINISH://已经下载完成,可以安装
-                String path = PackageUtil.isExistsFile(task.getPackage_names(), task.getDownload_link());
+                String path = PackageUtil.isExistsFile(download.getPackage_names(), download.getDownload_link());
                 if(TextUtils.isEmpty(path)){//数据库保存有下载完成的状态,但是应用已经被删除,需要修复其下载状态
                 if(TextUtils.isEmpty(path)){//数据库保存有下载完成的状态,但是应用已经被删除,需要修复其下载状态
-                    if(TextUtils.isEmpty(task.getDownload_link()) || !task.getDownload_link().contains("http")){
+                    if(TextUtils.isEmpty(download.getDownload_link()) || !download.getDownload_link().contains("http")){
                         G.showToast(R.string.error_download_link);
                         G.showToast(R.string.error_download_link);
                         return;
                         return;
                     }
                     }
-                    this.downloadTarget = Aria.download(activity).load(task.getDownload_link());
-                    if(this.downloadTarget != null) {
-                        this.downloadTarget.cancel(true);
-                        this.downloadTarget.removeRecord();
-                        mDownloadTaskService.start(mDownloadTaskService.getDownloadTaskByUrl(task));
-                        mDownloadTaskService.setDownloadTaskStatus(task.getDownload_link(), DownloadUtil.STATUS_INIT);
+                    final DownLoadInfo oldDownloadInfo = downloadUtil.getDownloadTaskByUrl(download);
+                    if(oldDownloadInfo != null) {
+                        downloadUtil.delete(oldDownloadInfo);
+                        downloadUtil.start(downloadUtil.getDownloadTaskByUrl(download));
+                        downloadUtil.setDownloadTaskStatus(download.getDownload_link(), DownloadUtil.STATUS_INIT);
                         downLoadType = DownloadUtil.STATUS_INIT;
                         downLoadType = DownloadUtil.STATUS_INIT;
                     }
                     }
                 } else {
                 } else {
-                    ApkUtils.installApk(activity, PackageUtil.isExistsFile(task.getPackage_names(), task.getDownload_link()));
+                    ApkUtils.installApk(SheepApp.getInstance(), path);
                 }
                 }
                 break;
                 break;
             case DownloadUtil.STATUS_INSTALLED://已经安装,可以试玩
             case DownloadUtil.STATUS_INSTALLED://已经安装,可以试玩
-                PackageUtil.startApp(activity, task.getPackage_names());
+                PackageUtil.startApp(activity, download.getPackage_names());
                 break;
                 break;
         }
         }
     }
     }

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/util/CertificationUtil.java

@@ -66,8 +66,8 @@ public class CertificationUtil {
             if (TextUtils.isEmpty(ext)) {
             if (TextUtils.isEmpty(ext)) {
                 intent.putExtra(context.getString(R.string.kfzs_duanduan_datashare_package_extras), "");
                 intent.putExtra(context.getString(R.string.kfzs_duanduan_datashare_package_extras), "");
                 intent.putExtra(context.getString(R.string.kfzs_duanduan_datashare_certification_token), SpUtils.getToken(context));
                 intent.putExtra(context.getString(R.string.kfzs_duanduan_datashare_certification_token), SpUtils.getToken(context));
-            } else if("cancel".equals(ext)){
-                intent.putExtra(context.getString(R.string.kfzs_duanduan_datashare_certification_cancel), "cancel");
+            } else if("delete".equals(ext)){
+                intent.putExtra(context.getString(R.string.kfzs_duanduan_datashare_certification_cancel), "delete");
             }else  {
             }else  {
                 intent.putExtra(context.getString(R.string.kfzs_duanduan_datashare_package_extras), ext);
                 intent.putExtra(context.getString(R.string.kfzs_duanduan_datashare_package_extras), ext);
                 intent.putExtra(context.getString(R.string.kfzs_duanduan_datashare_certification_token), SpUtils.getToken(context));
                 intent.putExtra(context.getString(R.string.kfzs_duanduan_datashare_certification_token), SpUtils.getToken(context));

+ 15 - 19
app/src/main/java/com/sheep/gamegroup/util/CommonUtil.java

@@ -25,10 +25,6 @@ import android.widget.TextView;
 
 
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.alipay.sdk.app.PayTask;
 import com.alipay.sdk.app.PayTask;
-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.kfzs.duanduan.utils.ApkUtils;
 import com.kfzs.duanduan.utils.ApkUtils;
 import com.mdad.sdk.mdsdk.AdManager;
 import com.mdad.sdk.mdsdk.AdManager;
 import com.mdad.sdk.mdsdk.common.AdData;
 import com.mdad.sdk.mdsdk.common.AdData;
@@ -264,14 +260,14 @@ public class CommonUtil {
         if (TextUtils.isEmpty(downloadUrl)) {
         if (TextUtils.isEmpty(downloadUrl)) {
             return;
             return;
         }
         }
-        try {
-            DownloadTarget task = Aria.download(context).load(downloadUrl);
-            if (task != null && task.getTaskState() == IEntity.STATE_RUNNING) {
-                task.stop();
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
+//        try {
+//            DownloadTarget task = Aria.download(context).load(downloadUrl);
+//            if (task != null && task.getTaskState() == IEntity.STATE_RUNNING) {
+//                task.stop();
+//            }
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
     }
     }
 
 
     /**
     /**
@@ -1109,7 +1105,7 @@ public class CommonUtil {
 
 
         @Override
         @Override
         public void onCancel(SHARE_MEDIA share_media) {
         public void onCancel(SHARE_MEDIA share_media) {
-            LogUtil.println("UMShareListener", "cancel", share_media.getName());
+            LogUtil.println("UMShareListener", "delete", share_media.getName());
         }
         }
     }
     }
 
 
@@ -2069,15 +2065,15 @@ public class CommonUtil {
      * 下载回调 状态修改
      * 下载回调 状态修改
      */
      */
     public void setEventResultViewStatus(BigEvent event, View view, boolean isShowSpeed) {
     public void setEventResultViewStatus(BigEvent event, View view, boolean isShowSpeed) {
-        if (event.getData() instanceof DownloadTask) {
-            DownloadTask task = (DownloadTask) event.getData();
-            String url = task.getKey();
+        if (event.getData() instanceof DownLoadInfo) {
+            DownLoadInfo task = (DownLoadInfo) event.getData();
+            String url = task.getMDownloadUrl();
             TextView tvProgress = view.findViewWithTag(PUBLIC_TAG_PREFIX_TEXTVIEW_LIST + url);
             TextView tvProgress = view.findViewWithTag(PUBLIC_TAG_PREFIX_TEXTVIEW_LIST + url);
             switch (event.getEventTypes()) {
             switch (event.getEventTypes()) {
-                case GENERATION_ACCOUNT_REFRESH_ADAPTER:
+                case DOWNLOAD_RUNNING:
                     try {
                     try {
-                        int p = task.getPercent();    //任务进度百分比
-                        String speed = task.getConvertSpeed();    //转换单位后的下载速度,单位转换需要在配置文件中打开
+                        int p = task.getMPercent();    //任务进度百分比
+                        String speed = task.getAverageSpeed();    //转换单位后的下载速度,单位转换需要在配置文件中打开
                         if (tvProgress == null) {
                         if (tvProgress == null) {
                             return;
                             return;
                         }
                         }

+ 71 - 25
app/src/main/java/com/sheep/gamegroup/util/DownloadUtil.java

@@ -4,14 +4,14 @@ import android.content.Context;
 import android.os.Build;
 import android.os.Build;
 import android.text.TextUtils;
 import android.text.TextUtils;
 
 
-import com.arialyy.aria.core.Aria;
-import com.arialyy.aria.core.download.DownloadTarget;
-
+import com.liulishuo.okdownload.DownloadTask;
+import com.liulishuo.okdownload.OkDownload;
 import com.sheep.gamegroup.greendao.DDProviderHelper;
 import com.sheep.gamegroup.greendao.DDProviderHelper;
 import com.sheep.gamegroup.greendao.download.DownLoadInfo;
 import com.sheep.gamegroup.greendao.download.DownLoadInfo;
 import com.sheep.gamegroup.model.api.IDownload;
 import com.sheep.gamegroup.model.api.IDownload;
 import com.sheep.gamegroup.model.entity.DialogEntity;
 import com.sheep.gamegroup.model.entity.DialogEntity;
 import com.sheep.gamegroup.model.entity.OrienteeringDetail;
 import com.sheep.gamegroup.model.entity.OrienteeringDetail;
+import com.sheep.gamegroup.model.entity.TaskEty;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.ClassFileHelper;
 import com.sheep.jiuyan.samllsheep.utils.ClassFileHelper;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
@@ -19,7 +19,6 @@ import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 import java.io.File;
 import java.io.File;
 import java.util.List;
 import java.util.List;
 
 
-import static com.sheep.jiuyan.samllsheep.utils.ClassFileHelper.DIR;
 
 
 /**
 /**
  * The local database persistence if download task
  * The local database persistence if download task
@@ -73,7 +72,6 @@ public class DownloadUtil {
         this.ctx = context;
         this.ctx = context;
     }
     }
 
 
-
     /**
     /**
      * Query all download task details information
      * Query all download task details information
      *
      *
@@ -271,8 +269,8 @@ public class DownloadUtil {
      * @param downloadUrl
      * @param downloadUrl
      * @param apkPath
      * @param apkPath
      */
      */
-    public void setDownloadTaskFinish(String downloadUrl, String apkPath) {
-        DDProviderHelper.getInstance()
+    public DownLoadInfo setDownloadTaskFinish(String downloadUrl, String apkPath) {
+        return DDProviderHelper.getInstance()
                 .setDownloadTaskFinish(ctx, downloadUrl, apkPath);
                 .setDownloadTaskFinish(ctx, downloadUrl, apkPath);
        /* ContentResolver resolver = ctx.getContentResolver();
        /* ContentResolver resolver = ctx.getContentResolver();
         DownloadtaskSelection where = new DownloadtaskSelection();
         DownloadtaskSelection where = new DownloadtaskSelection();
@@ -291,6 +289,10 @@ public class DownloadUtil {
 
 
     }
     }
 
 
+    public DownLoadInfo setDownloadTaskPercent(double downloadedSize, String averageSpeed, int downloadTaskId, String downloadUrl) {
+        return DDProviderHelper.getInstance().updateDownloadPercent(ctx, downloadedSize, averageSpeed, downloadTaskId, downloadUrl, DownloadUtil.STATUS_ING);
+    }
+
     public void setDownloadTaskPercent(int percent, double downloadedSize, double totalSize, int downloadTaskId, String downloadUrl) {
     public void setDownloadTaskPercent(int percent, double downloadedSize, double totalSize, int downloadTaskId, String downloadUrl) {
         DDProviderHelper.getInstance().updateDownloadPercent(ctx, percent, downloadedSize, totalSize, downloadTaskId, downloadUrl, DownloadUtil.STATUS_ING);
         DDProviderHelper.getInstance().updateDownloadPercent(ctx, percent, downloadedSize, totalSize, downloadTaskId, downloadUrl, DownloadUtil.STATUS_ING);
 
 
@@ -322,12 +324,21 @@ public class DownloadUtil {
     }
     }
 
 
     /**
     /**
+     * 根据下载地址,更新下载文件总大小
+     *
+     * @param downloadUrl
+     * @param totalLength
+     */
+    public DownLoadInfo setDownloadTaskTotal(String downloadUrl, double totalLength) {
+        return DDProviderHelper.getInstance().setDownloadTaskTotal(ctx, downloadUrl, totalLength);
+    }
+    /**
      * Set the task status
      * Set the task status
      *
      *
      * @param downloadUrl
      * @param downloadUrl
      * @param status
      * @param status
      */
      */
-    public boolean setDownloadTaskStatus(String downloadUrl, int status) {
+    public DownLoadInfo setDownloadTaskStatus(String downloadUrl, int status) {
 
 
         return DDProviderHelper.getInstance().setDownloadTaskStatus(ctx, downloadUrl, status);
         return DDProviderHelper.getInstance().setDownloadTaskStatus(ctx, downloadUrl, status);
         /*ContentResolver resolver = ctx.getContentResolver();
         /*ContentResolver resolver = ctx.getContentResolver();
@@ -361,6 +372,32 @@ public class DownloadUtil {
     }
     }
 
 
 
 
+    public static DownloadTask getTask(IDownload download){
+        return DownloadUtil.getTask(download.getDownload_link(),  ClassFileHelper.DIR + File.separator + download.getPackage_names() + download.getDownload_link().hashCode() + ClassFileHelper.FILE_SUFFIX);
+    }
+
+
+    public static DownloadTask getTask(DownLoadInfo downLoadInfo){
+        return DownloadUtil.getTask(downLoadInfo.getMDownloadUrl(), downLoadInfo.getMApkPath());
+    }
+
+
+    public static DownloadTask getTask(String downloadUrl, String filePath){
+        DownloadTask.Builder builder = new DownloadTask.Builder(downloadUrl, new File(filePath));
+        // Set the minimum internal milliseconds of progress callbacks to 100ms.(default is 3000)
+        builder.setMinIntervalMillisCallbackProcess(100);
+        // set the priority of the task to 10, higher means less time to wait to download.(default is 0)
+        builder.setPriority(10);
+        // set the read buffer to 8192 bytes for the response input-stream.(default is 4096)
+        builder.setReadBufferSize(8192);
+        // set the flush buffer to 32768 bytes for the buffered output-stream.(default is 16384)
+        builder.setFlushBufferSize(32768);
+        // set this task allow using 5 connections to download data.
+        builder.setConnectionCount(5);
+        // build the task.
+//        DownloadTask task = builder.build();
+        return builder.build();
+    }
     public void start(DownLoadInfo downLoadInfo) {
     public void start(DownLoadInfo downLoadInfo) {
         if (SpUtils.getDownNotice(SheepApp.getInstance()) == 0
         if (SpUtils.getDownNotice(SheepApp.getInstance()) == 0
                 && NetUtil.isConnected(SheepApp.getInstance())
                 && NetUtil.isConnected(SheepApp.getInstance())
@@ -380,26 +417,35 @@ public class DownloadUtil {
         if (SpUtils.getDownNotice(SheepApp.getInstance()) == 1) {//第一次不提示
         if (SpUtils.getDownNotice(SheepApp.getInstance()) == 1) {//第一次不提示
             SpUtils.saveDownNotice(SheepApp.getInstance(), 0);
             SpUtils.saveDownNotice(SheepApp.getInstance(), 0);
         }
         }
-        DownloadTarget task = Aria.download(SheepApp.getInstance()).load(downLoadInfo.getMDownloadUrl()).addHeader("User-Agent", SysAppUtil.getUserAgent());
-        String filePath;
-        if (TextUtils.isEmpty(downLoadInfo.getMPackageName())) {
-            filePath = DIR + File.separator + downLoadInfo.getMGameName() + downLoadInfo.getMDownloadUrl().hashCode() + ClassFileHelper.FILE_SUFFIX;
-        } else {
-            filePath = DIR + File.separator + downLoadInfo.getMPackageName() + downLoadInfo.getMDownloadUrl().hashCode() + ClassFileHelper.FILE_SUFFIX;
-        }
-        task.setFilePath(filePath).start();
+        Jump2View.getInstance().startDownloadService(SheepApp.getInstance(), downLoadInfo);
     }
     }
 
 
-    public void pause(DownLoadInfo downLoadInfo) {
-        DownloadTarget task = Aria.download(SheepApp.getInstance()).load(downLoadInfo.getMDownloadUrl());
-        task.stop();
+    /**
+     * 删除文件并删除记录
+     * @param downLoadInfo
+     */
+    public void delete(DownLoadInfo downLoadInfo) {
+        if(downLoadInfo != null) {
+            if(downLoadInfo.getMDownloadTaskId() != null) {
+                OkDownload.with().downloadDispatcher().cancel(downLoadInfo.getMDownloadTaskId());
+                OkDownload.with().breakpointStore().remove(downLoadInfo.getMDownloadTaskId());
+            }
+            if (!TextUtils.isEmpty(downLoadInfo.getMApkPath()) && new File(downLoadInfo.getMApkPath()).delete()) {
+                LogUtil.println("DownloadUtil", "delete", "删除成功");
+            }
+        }
     }
     }
 
 
-    public void cancel(DownLoadInfo downLoadInfo) {
-        DownloadTarget task = Aria.download(SheepApp.getInstance()).load(downLoadInfo.getMDownloadUrl());
-        task.stop();
-        task.cancel(true);
-        task.removeRecord();
+    /**
+     * 检查文件是否真的下载完成
+     * @param downLoadInfo
+     * @return
+     */
+    public boolean checkFinish(DownLoadInfo downLoadInfo) {
+        if(downLoadInfo.getMApkPath() == null){
+            return false;
+        }
+        File file = new File(downLoadInfo.getMApkPath());
+        return file.exists() && downLoadInfo.getMDownloadedSize() == (double) file.getTotalSpace();
     }
     }
-
 }
 }

+ 14 - 0
app/src/main/java/com/sheep/gamegroup/util/FileUtil.java

@@ -178,6 +178,20 @@ public class FileUtil {
         }
         }
         return filename;
         return filename;
     }
     }
+    /*
+     * Java文件操作 获取带扩展名的文件名
+     * */
+    public static String getFileName(String filename) {
+        if ((filename != null) && (filename.length() > 0)) {
+            int dot = filename.lastIndexOf('/');
+            if ((dot > -1) && (dot < (filename.length()))) {
+                return filename.substring(0, dot);
+            } else {
+                return filename.hashCode() + ".apk";//默认apk
+            }
+        }
+        return filename;
+    }
 
 
 
 
 
 

+ 12 - 0
app/src/main/java/com/sheep/gamegroup/util/Jump2View.java

@@ -12,7 +12,9 @@ import android.text.TextUtils;
 import android.view.Gravity;
 import android.view.Gravity;
 import android.view.View;
 import android.view.View;
 
 
+import com.liulishuo.okdownload.DownloadTask;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.absBase.BaseActivity;
+import com.sheep.gamegroup.greendao.download.DownLoadInfo;
 import com.sheep.gamegroup.model.entity.Advertising;
 import com.sheep.gamegroup.model.entity.Advertising;
 import com.sheep.gamegroup.model.entity.Agreement;
 import com.sheep.gamegroup.model.entity.Agreement;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.BaseMessage;
@@ -114,6 +116,7 @@ import com.sheep.jiuyan.samllsheep.BuildConfig;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.service.AutoCheckService;
 import com.sheep.jiuyan.samllsheep.service.AutoCheckService;
+import com.sheep.jiuyan.samllsheep.service.DownloadService;
 import com.sheep.jiuyan.samllsheep.service.FloatShotScreenService;
 import com.sheep.jiuyan.samllsheep.service.FloatShotScreenService;
 import com.sheep.jiuyan.samllsheep.service.ListenerShotNewService;
 import com.sheep.jiuyan.samllsheep.service.ListenerShotNewService;
 import com.sheep.jiuyan.samllsheep.service.ListenerShotService;
 import com.sheep.jiuyan.samllsheep.service.ListenerShotService;
@@ -2008,4 +2011,13 @@ public class Jump2View {
                 .putExtra("token", token),
                 .putExtra("token", token),
                 ActPay.RESULT_CODE);
                 ActPay.RESULT_CODE);
     }
     }
+
+    /**
+     * 启动下载后台服务进行下载
+     * @param context
+     * @param downLoadInfo
+     */
+    public void startDownloadService(Context context, DownLoadInfo downLoadInfo) {
+        context.startService(new Intent(context, DownloadService.class).putExtra("download_url", downLoadInfo.getMDownloadUrl()).putExtra("file_path", downLoadInfo.getMApkPath()));
+    }
 }
 }

+ 146 - 0
app/src/main/java/com/sheep/gamegroup/util/Md5Util.java

@@ -0,0 +1,146 @@
+package com.sheep.gamegroup.util;
+
+import android.text.TextUtils;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.math.BigInteger;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+/**
+ * Created by realicing on 2018/10/22.
+ * realicing@sina.com
+ */
+public class Md5Util {
+
+    private static final String TAG = "Md5Util";
+
+    /**
+     * 创建文件名,如果url链接有后缀名,则使用url中的后缀名
+     *
+     * @return url 的 hashKey
+     */
+    public static String createFileName(String url) {
+        int end = url.indexOf("?");
+        String tempUrl, fileName = "";
+        if (end > 0) {
+            tempUrl = url.substring(0, end);
+            int tempEnd = tempUrl.lastIndexOf("/");
+            if (tempEnd > 0) {
+                fileName = tempUrl.substring(tempEnd + 1, tempUrl.length());
+            }
+        } else {
+            int tempEnd = url.lastIndexOf("/");
+            if (tempEnd > 0) {
+                fileName = url.substring(tempEnd + 1, url.length());
+            }
+        }
+        return fileName;
+    }
+
+
+    /**
+     * 获取字符串的md5
+     *
+     * @return 字符串为空或获取md5失败,则返回""
+     */
+    public static String getStrMd5(String str) {
+        if (TextUtils.isEmpty(str)) return "";
+        try {
+            MessageDigest md = MessageDigest.getInstance("MD5");
+            md.update(str.getBytes());
+            return new BigInteger(1, md.digest()).toString(16);
+        } catch (NoSuchAlgorithmException e) {
+        }
+        return "";
+    }
+
+    /**
+     * 校验文件MD5码
+     */
+    public static boolean checkMD5(String md5, File updateFile) {
+        if (TextUtils.isEmpty(md5) || updateFile == null) {
+//            ALog.e(TAG, "MD5 string empty or updateFile null");
+            return false;
+        }
+
+        String calculatedDigest = getFileMD5(updateFile);
+        if (calculatedDigest == null) {
+//            ALog.e(TAG, "calculatedDigest null");
+            return false;
+        }
+        return calculatedDigest.equalsIgnoreCase(md5);
+    }
+
+    /**
+     * 校验文件MD5码
+     */
+    public static boolean checkMD5(String md5, InputStream is) {
+        if (TextUtils.isEmpty(md5) || is == null) {
+//            ALog.e(TAG, "MD5 string empty or updateFile null");
+            return false;
+        }
+
+        String calculatedDigest = getFileMD5(is);
+        if (calculatedDigest == null) {
+//            ALog.e(TAG, "calculatedDigest null");
+            return false;
+        }
+        return calculatedDigest.equalsIgnoreCase(md5);
+    }
+
+    /**
+     * 获取文件MD5码
+     */
+    public static String getFileMD5(File updateFile) {
+        InputStream is;
+        try {
+            is = new FileInputStream(updateFile);
+        } catch (FileNotFoundException e) {
+//            ALog.e(TAG, e);
+            return null;
+        }
+
+        return getFileMD5(is);
+    }
+
+    /**
+     * 获取文件MD5码
+     */
+    public static String getFileMD5(InputStream is) {
+        MessageDigest digest;
+        try {
+            digest = MessageDigest.getInstance("MD5");
+        } catch (NoSuchAlgorithmException e) {
+//            ALog.e(TAG, e);
+            return null;
+        }
+
+        byte[] buffer = new byte[8192];
+        int read;
+        try {
+            while ((read = is.read(buffer)) > 0) {
+                digest.update(buffer, 0, read);
+            }
+            byte[] md5sum = digest.digest();
+            BigInteger bigInt = new BigInteger(1, md5sum);
+            String output = bigInt.toString(16);
+            // Fill to 32 chars
+            output = String.format("%32s", output).replace(' ', '0');
+            return output;
+        } catch (IOException e) {
+            throw new RuntimeException("Unable to process file for MD5", e);
+        } finally {
+            try {
+                is.close();
+            } catch (IOException e) {
+//                ALog.e(TAG, e);
+            }
+        }
+    }
+
+}

+ 2 - 3
app/src/main/java/com/sheep/gamegroup/util/SysAppUtil.java

@@ -18,7 +18,6 @@ import android.view.Gravity;
 import android.view.View;
 import android.view.View;
 import android.widget.TextView;
 import android.widget.TextView;
 
 
-import com.arialyy.aria.util.CommonUtil;
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.load.engine.cache.InternalCacheDiskCacheFactory;
 import com.bumptech.glide.load.engine.cache.InternalCacheDiskCacheFactory;
 import com.kfzs.duanduan.utils.ApkUtils;
 import com.kfzs.duanduan.utils.ApkUtils;
@@ -557,7 +556,7 @@ public class SysAppUtil {
                 public void onClick(final View view) {
                 public void onClick(final View view) {
                     if(view instanceof TextView)
                     if(view instanceof TextView)
                         UPGRADE_DIALOG_BT.onEvent("action", ((TextView) view).getText());
                         UPGRADE_DIALOG_BT.onEvent("action", ((TextView) view).getText());
-                    if(file.exists() && CommonUtil.checkMD5(version.getMd5_address(), file)){//文件存在并且md5值相同则直接安装
+                    if(file.exists() && Md5Util.checkMD5(version.getMd5_address(), file)){//文件存在并且md5值相同则直接安装
                         installApk(file);
                         installApk(file);
                     } else if(TextUtils.isEmpty(version.getAddress())){//地址错误
                     } else if(TextUtils.isEmpty(version.getAddress())){//地址错误
                         G.showToast(R.string.error_download_link);
                         G.showToast(R.string.error_download_link);
@@ -627,7 +626,7 @@ public class SysAppUtil {
         if(packageInfo == null || TextUtils.isEmpty(packageInfo.applicationInfo.sourceDir)){
         if(packageInfo == null || TextUtils.isEmpty(packageInfo.applicationInfo.sourceDir)){
             return "";
             return "";
         }
         }
-        String fileMD5 = com.arialyy.aria.util.CommonUtil.getFileMD5(new File(packageInfo.applicationInfo.sourceDir));
+        String fileMD5 = Md5Util.getFileMD5(new File(packageInfo.applicationInfo.sourceDir));
         LogUtil.println("FileMD5", fileMD5);
         LogUtil.println("FileMD5", fileMD5);
         return fileMD5;
         return fileMD5;
     }
     }

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/util/TestUtil.java

@@ -224,7 +224,7 @@ public class TestUtil {
                     public void onClick(DialogInterface dialog, int which) {
                     public void onClick(DialogInterface dialog, int which) {
                         switch (items[which]) {
                         switch (items[which]) {
                             case "测试支付":
                             case "测试支付":
-                                Jump2View.getInstance().goActPay(activity, "6458603943269240832", SpUtils.getToken(activity));
+                                Jump2View.getInstance().goActPay(activity, "6458650174678896640", SpUtils.getToken(activity));
                                 break;
                                 break;
                             case "测试内部h5":
                             case "测试内部h5":
                                 Jump2View.getInstance().goWeb(activity, "www.17xmy.com/", "小绵羊官网");
                                 Jump2View.getInstance().goWeb(activity, "www.17xmy.com/", "小绵羊官网");
@@ -496,7 +496,7 @@ public class TestUtil {
 
 
                     @Override
                     @Override
                     public void onCancel(SHARE_MEDIA share_media) {
                     public void onCancel(SHARE_MEDIA share_media) {
-                        Log.e("cancel---"+share_media.getName(), share_media.getName());
+                        Log.e("delete---"+share_media.getName(), share_media.getName());
                     }
                     }
                 })
                 })
                 .open();
                 .open();

+ 20 - 89
app/src/main/java/com/sheep/gamegroup/util/WebviewJs.java

@@ -5,21 +5,25 @@ import android.os.Build;
 import android.text.TextUtils;
 import android.text.TextUtils;
 import android.webkit.JavascriptInterface;
 import android.webkit.JavascriptInterface;
 
 
-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.kfzs.duanduan.utils.ApkUtils;
 import com.sheep.gamegroup.event.BigEvent;
 import com.sheep.gamegroup.event.BigEvent;
 import com.sheep.gamegroup.event.EventTypes;
 import com.sheep.gamegroup.event.EventTypes;
 import com.sheep.gamegroup.greendao.download.DownLoadInfo;
 import com.sheep.gamegroup.greendao.download.DownLoadInfo;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 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.G;
 import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
 import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
+import com.zhy.http.okhttp.OkHttpUtils;
+import com.zhy.http.okhttp.callback.FileCallBack;
 
 
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.EventBus;
 
 
+import java.io.File;
+import java.util.Locale;
+
+import okhttp3.Call;
+
 /**
 /**
  * Created by ljy on 2018/6/25.
  * Created by ljy on 2018/6/25.
  */
  */
@@ -27,18 +31,14 @@ import org.greenrobot.eventbus.EventBus;
 public class WebviewJs {
 public class WebviewJs {
     private Activity activity;
     private Activity activity;
     private int taskId;
     private int taskId;
-    private String packgeName;
-    private DownloadUtil mDownloadTaskService;
 
 
     public WebviewJs(Activity activity) {
     public WebviewJs(Activity activity) {
         this.activity = activity;
         this.activity = activity;
-        mDownloadTaskService = new DownloadUtil(activity);
     }
     }
 
 
     public WebviewJs(Activity activity, int taskId) {
     public WebviewJs(Activity activity, int taskId) {
         this.activity = activity;
         this.activity = activity;
         this.taskId = taskId;
         this.taskId = taskId;
-        mDownloadTaskService = new DownloadUtil(activity);
     }
     }
 
 
     @JavascriptInterface
     @JavascriptInterface
@@ -153,89 +153,20 @@ public class WebviewJs {
     /**
     /**
      * 下载地址
      * 下载地址
      */
      */
-    private void downLoad(String packName){
-        if (mDownloadTaskService == null){
-            mDownloadTaskService = new DownloadUtil(activity);
-        }
-//        Aria.download(this).register();
-        DownloadTarget task = Aria.download(activity).load(packName);
-        DownLoadInfo downLoadInfo = mDownloadTaskService.getDownloadTaskByUrl(packName);
-        if(downLoadInfo == null){
-            downLoadInfo = CommonUtil.getInstance()
-                    .addNewDownloadTask(packName, packName, packName,
-                            Build.VERSION.SDK_INT, 0+"", 10+"", 0, 0);
-        }
-
-        if (task.getTaskState() == IEntity.STATE_RUNNING) {
-            task.stop();
-        } else if (task.getTaskState() == IEntity.STATE_FAIL) {
-            task.cancel(true);
-            task.removeRecord();
-        } else {
-            switch (downLoadInfo.getMStatus()){
-                case 2:
-                case 4:
-                    G.showToast("正在下载中...");
-                    break;
-                case 3:
-//                    G.showToast("下载完成");
-                    break;
-                default:
-                    G.showToast("开始下载中!");
-                    downLoadInfo.setMStatus(2);
-                    break;
+    private void downLoad(String url){
+        OkHttpUtils.get().url(url).build().execute(new FileCallBack(ClassFileHelper.DIR, FileUtil.getFileName(url)) {
+            @Override
+            public void onError(Call call, Exception e, int id) {
+                G.showToast(String.format(Locale.CHINA, "下载失败(%s)", e.getMessage()));
             }
             }
 
 
-            mDownloadTaskService.start(downLoadInfo);
-            mDownloadTaskService.addDownloadTask(downLoadInfo);
-            final DownLoadInfo finalDownLoadInfo = downLoadInfo;
-            new Thread(new Runnable() {
-                @Override
-                public void run() {
-                    if(mDownloadTaskService.addDownloadTask(finalDownLoadInfo)){
-                        //发送红点信息
-                        EventBus.getDefault().post(BigEvent.get().setEventTypes(EventTypes.TIPS_DOWN_ICON));
-                    }
+            @Override
+            public void onResponse(File response, int id) {
+                if(response.getAbsolutePath().endsWith(".apk")){
+                    ApkUtils.installApk(activity, response.getAbsolutePath());
                 }
                 }
-            }).start();
-        }
-    }
-
-    @Download.onTaskFail
-    void taskFail(DownloadTask downloadTask){
-        if(mDownloadTaskService == null)
-            mDownloadTaskService = new DownloadUtil(activity);
-        DownLoadInfo downLoadInfo = mDownloadTaskService.getDownloadTaskByUrl(downloadTask.getKey());
-        if(downLoadInfo != null){
-            downLoadInfo.setMStatus(1);
-            mDownloadTaskService.addDownloadTask(downLoadInfo);
-            G.showToast("下载失败");
-        }
-    }
-
-    @Download.onTaskComplete
-    void taskComplete(DownloadTask downloadTask){
-        if(mDownloadTaskService == null)
-            mDownloadTaskService = new DownloadUtil(activity);
-        DownLoadInfo downLoadInfo = mDownloadTaskService.getDownloadTaskByUrl(downloadTask.getKey());
-        if(downLoadInfo != null){
-            G.showToast("下载成功");
-            downLoadInfo.setMStatus(3);
-            mDownloadTaskService.addDownloadTask(downLoadInfo);
-            PackageUtil.installApk(activity, downloadTask.getDownloadPath());
-        }
-
-    }
-    @Download.onTaskRunning
-    protected void running(DownloadTask downloadTask) {
-        if(mDownloadTaskService == null)
-            mDownloadTaskService = new DownloadUtil(activity);
-        DownLoadInfo downLoadInfo = mDownloadTaskService.getDownloadTaskByUrl(downloadTask.getKey());
-        if(downLoadInfo != null){
-            downLoadInfo.setMStatus(2);
-            mDownloadTaskService.addDownloadTask(downLoadInfo);
-//            G.showToast("下载中....");
-        }
+            }
+        });
     }
     }
 
 
 }
 }

+ 89 - 116
app/src/main/java/com/sheep/gamegroup/view/activity/ActDownloadMgr.java

@@ -1,7 +1,6 @@
 package com.sheep.gamegroup.view.activity;
 package com.sheep.gamegroup.view.activity;
 
 
 import android.content.Context;
 import android.content.Context;
-import android.os.Handler;
 import android.text.TextUtils;
 import android.text.TextUtils;
 import android.view.View;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.ViewGroup;
@@ -10,24 +9,21 @@ import android.widget.ProgressBar;
 import android.widget.TextView;
 import android.widget.TextView;
 import android.widget.Toast;
 import android.widget.Toast;
 
 
-import com.arialyy.annotations.Download;
-import com.arialyy.aria.core.Aria;
-import com.arialyy.aria.core.download.DownloadTask;
 import com.kfzs.appstore.utils.adapter.OnMDLItemChildClickListener;
 import com.kfzs.appstore.utils.adapter.OnMDLItemChildClickListener;
-import com.sheep.gamegroup.greendao.download.DownLoadInfo;
-import com.sheep.gamegroup.model.entity.DownloadStatus;
-import com.sheep.gamegroup.event.BigEvent;
-import com.sheep.gamegroup.event.EventDownloadHandler;
-import com.sheep.gamegroup.event.EventTypes;
-import com.sheep.gamegroup.util.DownloadUtil;
 import com.kfzs.duanduan.utils.ApkUtils;
 import com.kfzs.duanduan.utils.ApkUtils;
-import com.kfzs.duanduan.view.DialogStorageLow;
 import com.kfzs.duanduan.view.KFProgressButton;
 import com.kfzs.duanduan.view.KFProgressButton;
+import com.liulishuo.okdownload.DownloadTask;
+import com.liulishuo.okdownload.OkDownload;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.absBase.BaseActivity;
+import com.sheep.gamegroup.event.BigEvent;
+import com.sheep.gamegroup.event.EventDownloadHandler;
+import com.sheep.gamegroup.event.EventTypes;
+import com.sheep.gamegroup.greendao.download.DownLoadInfo;
+import com.sheep.gamegroup.model.entity.DownloadStatus;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.DownloadUtil;
 import com.sheep.gamegroup.view.adapter.DownloadMgrAdapter;
 import com.sheep.gamegroup.view.adapter.DownloadMgrAdapter;
 import com.sheep.jiuyan.samllsheep.R;
 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.ClassFileHelper;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
@@ -68,7 +64,7 @@ public class ActDownloadMgr extends BaseActivity {
     /**
     /**
      * The service about persistence data and sqlite helper
      * The service about persistence data and sqlite helper
      */
      */
-    DownloadUtil downloadTaskService;
+    DownloadUtil downloadUtil;
 
 
     /**
     /**
      * Data source
      * Data source
@@ -92,12 +88,7 @@ public class ActDownloadMgr extends BaseActivity {
                     @Override
                     @Override
                     public void onClick(View view) {
                     public void onClick(View view) {
                         try {
                         try {
-                            Aria.download(SheepApp.getInstance()).removeAllTask(true);
-                        } catch (Exception e) {
-                            e.printStackTrace();
-                        }
-                        try {
-                            downloadTaskService.deleteAllDownloadTask();
+                            downloadUtil.deleteAllDownloadTask();
                             downloadTasks.clear();
                             downloadTasks.clear();
                             downloadMgrAdapter.clear();
                             downloadMgrAdapter.clear();
                         } catch (Exception e) {
                         } catch (Exception e) {
@@ -115,14 +106,13 @@ public class ActDownloadMgr extends BaseActivity {
 
 
     @Override
     @Override
     public void initListener() {
     public void initListener() {
-        Aria.download(this).register();
         EventBus.getDefault().register(this);
         EventBus.getDefault().register(this);
     }
     }
 
 
     @Override
     @Override
     public void initData() {
     public void initData() {
         downloadTasks = new ArrayList<>();
         downloadTasks = new ArrayList<>();
-        downloadTaskService = new DownloadUtil(this);
+        downloadUtil = new DownloadUtil(this);
         initControlsEvents();
         initControlsEvents();
     }
     }
 
 
@@ -142,7 +132,7 @@ public class ActDownloadMgr extends BaseActivity {
                 if (downloadTasks.size() <= position) {
                 if (downloadTasks.size() <= position) {
                     return;
                     return;
                 }
                 }
-                final DownLoadInfo downloadTask = downloadTaskService.getDownloadTaskByUrl(downloadTasks.get(position).getMDownloadUrl());
+                final DownLoadInfo downloadTask = downloadUtil.getDownloadTaskByUrl(downloadTasks.get(position).getMDownloadUrl());
                 if (null == downloadTask) {
                 if (null == downloadTask) {
                     return;
                     return;
                 }
                 }
@@ -173,32 +163,13 @@ public class ActDownloadMgr extends BaseActivity {
 
 
     private void setDownloadTaskData() {
     private void setDownloadTaskData() {
         downloadTasks.clear();
         downloadTasks.clear();
-        downloadTasks.addAll(downloadTaskService.getAllDownloadTasks());
+        downloadTasks.addAll(downloadUtil.getAllDownloadTasks());
 
 
         downloadMgrAdapter.clear();
         downloadMgrAdapter.clear();
         downloadMgrAdapter.addMoreDatas(downloadTasks);
         downloadMgrAdapter.addMoreDatas(downloadTasks);
         showDownloadTaskList(!downloadTasks.isEmpty());
         showDownloadTaskList(!downloadTasks.isEmpty());
     }
     }
 
 
-
-    /*@Subscribe
-    public void onEventMainThread(final DownloadStatus info) {
-        if (mOnDownCallback == null) {
-            mOnDownCallback = DownBtnUtils.installBtnStatus(downloadMgrAdapter.getmInstallButtonMgrMap());
-        }
-        EventDownloadHandler
-                .newInstance(this, mOnDownCallback)
-                .setmTag(TAG)
-                .handlDownloadResult(info);
-    }*/
-
-    @Subscribe
-    public void onEventMainThread(BigEvent bigEvent) {
-        if (bigEvent.getEventTypes() == EventTypes.STORAGE_LOW) {
-            DialogStorageLow.showDialog(this);
-        }
-    }
-
     @Subscribe
     @Subscribe
     public void onEventMainThread(final DownloadStatus info) {
     public void onEventMainThread(final DownloadStatus info) {
         EventDownloadHandler.newInstance(this, new EventDownloadHandler.OnDownCallback() {
         EventDownloadHandler.newInstance(this, new EventDownloadHandler.OnDownCallback() {
@@ -272,18 +243,14 @@ public class ActDownloadMgr extends BaseActivity {
     //删除任务;
     //删除任务;
     private void downloadTaskItemEventDelete(DownLoadInfo downloadTask, int position) {
     private void downloadTaskItemEventDelete(DownLoadInfo downloadTask, int position) {
         if (downloadTask.getMDownloadTaskId() != null) {
         if (downloadTask.getMDownloadTaskId() != null) {
-            downloadTaskService.cancel(downloadTask);
-        } else {
-
-        }
-        if (!TextUtils.isEmpty(downloadTask.getMApkPath())) {
-            new File(downloadTask.getMApkPath()).delete();
+            downloadUtil.delete(downloadTask);
+            removeTask(position);
         }
         }
-        removeTask(position);
         doubleKill = false;
         doubleKill = false;
     }
     }
 
 
     public static final int MAX_DOWNLOAD_TASK_SIZE = 5;
     public static final int MAX_DOWNLOAD_TASK_SIZE = 5;
+
     private void downloadTaskItemEventAction(DownLoadInfo downloadTask) {
     private void downloadTaskItemEventAction(DownLoadInfo downloadTask) {
         switch (downloadTask.getMStatus()) {
         switch (downloadTask.getMStatus()) {
             case DownloadUtil.STATUS_INIT:
             case DownloadUtil.STATUS_INIT:
@@ -293,7 +260,7 @@ public class ActDownloadMgr extends BaseActivity {
                         downloadTask.getMPercent() == null ? 0 : downloadTask.getMPercent(), true);
                         downloadTask.getMPercent() == null ? 0 : downloadTask.getMPercent(), true);
                 break;
                 break;
             case DownloadUtil.STATUS_PAUSE:
             case DownloadUtil.STATUS_PAUSE:
-                int currentDownloadTaskSize = downloadTaskService.getDownloadingTasksCount();
+                int currentDownloadTaskSize = downloadUtil.getDownloadingTasksCount();
                 if (currentDownloadTaskSize >= MAX_DOWNLOAD_TASK_SIZE) {
                 if (currentDownloadTaskSize >= MAX_DOWNLOAD_TASK_SIZE) {
                     String strPrompt = String.format(getString(R.string.toast_download_task_out_of_rang), MAX_DOWNLOAD_TASK_SIZE + "");
                     String strPrompt = String.format(getString(R.string.toast_download_task_out_of_rang), MAX_DOWNLOAD_TASK_SIZE + "");
                     Toast.makeText(this, strPrompt, Toast.LENGTH_SHORT).show();
                     Toast.makeText(this, strPrompt, Toast.LENGTH_SHORT).show();
@@ -313,7 +280,7 @@ public class ActDownloadMgr extends BaseActivity {
                 boolean isPkgInstalled = ApkUtils.getInstance().isPkgInstalled(downloadTask.getMPackageName());
                 boolean isPkgInstalled = ApkUtils.getInstance().isPkgInstalled(downloadTask.getMPackageName());
                 if (isPkgInstalled) {
                 if (isPkgInstalled) {
                     int apkStatus = ApkUtils.getInstance().comparePkgVersionCode(downloadTask.getMPackageName(), downloadTask.getMVersionCode());
                     int apkStatus = ApkUtils.getInstance().comparePkgVersionCode(downloadTask.getMPackageName(), downloadTask.getMVersionCode());
-                    switch (apkStatus){
+                    switch (apkStatus) {
                         case EQUALS:
                         case EQUALS:
                         case LT:
                         case LT:
                             ApkUtils.openApplication(this, downloadTask.getMPackageName());
                             ApkUtils.openApplication(this, downloadTask.getMPackageName());
@@ -336,24 +303,21 @@ public class ActDownloadMgr extends BaseActivity {
     }
     }
 
 
     private void restartTaskByDownloadUrl(final DownLoadInfo task) {
     private void restartTaskByDownloadUrl(final DownLoadInfo task) {
-        downloadTaskService.cancel(task);
-        downloadTaskService.deleteDownloadTaskByDownloadUrl(task.getMDownloadUrl());
-        downloadTaskService.start(task);//重新下载
+        downloadUtil.delete(task);
+        downloadUtil.deleteDownloadTaskByDownloadUrl(task.getMDownloadUrl());
+        downloadUtil.start(task);//重新下载
         setDownloadTaskData();
         setDownloadTaskData();
     }
     }
 
 
     private void changeTaskPersistenceStatus(String downloadUrl, int status, int percent, boolean bPauseTask) {
     private void changeTaskPersistenceStatus(String downloadUrl, int status, int percent, boolean bPauseTask) {
-        boolean isUpdate = downloadTaskService.setDownloadTaskStatus(downloadUrl, status);
-        DownLoadInfo downLoadInfo = downloadTaskService.getDownloadTaskByUrl(downloadUrl);
-        if (isUpdate) {
-            setDownloadTaskData();
+        DownLoadInfo downLoadInfo = downloadUtil.setDownloadTaskStatus(downloadUrl, status);
+        if (downLoadInfo != null) {
+            DownloadTask task = DownloadUtil.getTask(downLoadInfo);
             if (bPauseTask) {
             if (bPauseTask) {
-                downloadTaskService.pause(downLoadInfo);
+                OkDownload.with().downloadDispatcher().cancel(task);
             } else {
             } else {
-                downloadTaskService.start(downLoadInfo);
-
+                downloadUtil.start(downLoadInfo);
             }
             }
-            postDownloadTaskEvents(downloadUrl, status, percent);
         }
         }
     }
     }
 
 
@@ -385,29 +349,10 @@ public class ActDownloadMgr extends BaseActivity {
             return;
             return;
         }
         }
 
 
-        boolean isSuccess = downloadTaskService.deleteDownloadTaskByDownloadUrl(targetUrl);
+        boolean isSuccess = downloadUtil.deleteDownloadTaskByDownloadUrl(targetUrl);
         if (isSuccess) {
         if (isSuccess) {
             setDownloadTaskData();
             setDownloadTaskData();
-            //延时执行,不然删除消息可能比下载进度信息先到,导致删除后还提示安装中
-            new Handler().postDelayed(new Runnable() {
-                @Override
-                public void run() {
-                    postDownloadTaskEvents(targetUrl, DownloadUtil.STATUS_DELETE, 0);
-                }
-            }, 500);
-        }
-    }
-
-
-    private void postDownloadTaskEvents(String targetUrl, int status, int percent) {
-        if ("".equals(targetUrl)) {
-            return;
         }
         }
-        DownloadStatus downloadStatusInfo = new DownloadStatus();
-        downloadStatusInfo.setStatus(status);
-        downloadStatusInfo.setDownloadUrl(targetUrl);
-        downloadStatusInfo.setDownloadPgrs(percent);
-        EventBus.getDefault().post(downloadStatusInfo);
     }
     }
 
 
 
 
@@ -416,62 +361,64 @@ public class ActDownloadMgr extends BaseActivity {
         if (fileDownloadSize == null || fileTotalSize == null) {
         if (fileDownloadSize == null || fileTotalSize == null) {
             return context.getString(R.string.calculating);
             return context.getString(R.string.calculating);
         }
         }
-        return df.format(fileDownloadSize) + "MB / " + fileTotalSize.intValue() + "MB";
+        return df.format(fileDownloadSize / (1024 * 1024)) + "MB / " + (fileTotalSize.intValue() / (1024 * 1024)) + "MB";
     }
     }
+
     public static String strFormat(Context context, Double fileDownloadSize) {
     public static String strFormat(Context context, Double fileDownloadSize) {
         DecimalFormat df = new DecimalFormat("######0.0");
         DecimalFormat df = new DecimalFormat("######0.0");
         if (fileDownloadSize == null) {
         if (fileDownloadSize == null) {
             return context.getString(R.string.calculating);
             return context.getString(R.string.calculating);
         }
         }
-        return df.format(fileDownloadSize) + "MB" ;
+        return df.format(fileDownloadSize) + "MB";
     }
     }
 
 
     private void showDownloadTaskList(boolean isShow) {
     private void showDownloadTaskList(boolean isShow) {
         CommonUtil.getInstance().updateEmptyView(empty_view, !isShow);
         CommonUtil.getInstance().updateEmptyView(empty_view, !isShow);
         lvDownloadMgr.setVisibility(!isShow ? View.GONE : View.VISIBLE);
         lvDownloadMgr.setVisibility(!isShow ? View.GONE : View.VISIBLE);
     }
     }
-    @Download.onPre void onPre(DownloadTask task) {
-    }
-    @Download.onTaskStart void taskStart(DownloadTask task) {
-    }
-    @Download.onTaskResume void taskResume(DownloadTask task) {
-    }
+
     //在这里处理任务执行中的状态,如进度进度条的刷新
     //在这里处理任务执行中的状态,如进度进度条的刷新
-    @Download.onTaskRunning protected void running(DownloadTask task) {
-//        downloadTaskService.setDownloadTaskPercent(p, task.getCurrentProgress()/1024d/1024d,task.getFileSize()/1024d/1024d,0,task.getKey());
+    protected void running(DownLoadInfo task) {
         try {
         try {
-            int p = task.getPercent();    //任务进度百分比
-            String speed = task.getConvertSpeed();    //转换单位后的下载速度,单位转换需要在配置文件中打开
-            System.out.println("Aria "+task.getKey()+",p " + p + ", speed = " + speed);
-            String url = task.getKey();
+            String url = task.getMDownloadUrl();
             KFProgressButton targetBtn = lvDownloadMgr.findViewWithTag(DownloadMgrAdapter.PUBLIC_TAG_PREFIX_BUTTON + url);
             KFProgressButton targetBtn = lvDownloadMgr.findViewWithTag(DownloadMgrAdapter.PUBLIC_TAG_PREFIX_BUTTON + url);
             ProgressBar pbProgress = lvDownloadMgr.findViewWithTag(DownloadMgrAdapter.PUBLIC_TAG_PREFIX_PROGRESS + url);
             ProgressBar pbProgress = lvDownloadMgr.findViewWithTag(DownloadMgrAdapter.PUBLIC_TAG_PREFIX_PROGRESS + url);
             TextView tvProgress = lvDownloadMgr.findViewWithTag(DownloadMgrAdapter.PUBLIC_TAG_PREFIX_TEXTVIEW + url);
             TextView tvProgress = lvDownloadMgr.findViewWithTag(DownloadMgrAdapter.PUBLIC_TAG_PREFIX_TEXTVIEW + url);
             if (tvProgress == null) {
             if (tvProgress == null) {
                 return;
                 return;
             }
             }
-            tvProgress.setText(strFormat(this,task.getCurrentProgress()/1024d/1024d,task.getFileSize()/1024d/1024d));
-            pbProgress.setProgress(task.getPercent());
+            tvProgress.setText(strFormat(this, task.getMDownloadedSize(), task.getMTotalSize()));
+            pbProgress.setProgress(task.getMPercent());
             targetBtn.setText(R.string.downloading);
             targetBtn.setText(R.string.downloading);
 
 
-            setTaskStatusByDownloadUrl(url, DownloadUtil.STATUS_ING, task.getDownloadPath());
+            setTaskStatusByDownloadUrl(url, DownloadUtil.STATUS_ING, task.getMApkPath());
         } catch (Exception e) {
         } catch (Exception e) {
             e.printStackTrace();
             e.printStackTrace();
         }
         }
     }
     }
 
 
-    @Download.onTaskStop void taskStop(DownloadTask task) {
-//        String url = task.getKey();
-//        downloadTaskService.setDownloadTaskStatus(url, DownloadTaskService.STATUS_PAUSE);
-    }
+    void taskStop(DownLoadInfo task) {
+        try {
+            String url = task.getMDownloadUrl();
+            KFProgressButton targetBtn = lvDownloadMgr.findViewWithTag(DownloadMgrAdapter.PUBLIC_TAG_PREFIX_BUTTON + url);
+            ProgressBar pbProgress = lvDownloadMgr.findViewWithTag(DownloadMgrAdapter.PUBLIC_TAG_PREFIX_PROGRESS + url);
+            TextView tvProgress = lvDownloadMgr.findViewWithTag(DownloadMgrAdapter.PUBLIC_TAG_PREFIX_TEXTVIEW + url);
+            if (tvProgress == null) {
+                return;
+            }
+            tvProgress.setText(strFormat(this, task.getMDownloadedSize(), task.getMTotalSize()));
+            pbProgress.setProgress(task.getMPercent());
+            targetBtn.setText(R.string.has_pause);
 
 
-    @Download.onNoSupportBreakPoint void onNoSupportBreakPoint(DownloadTask task) {
+            setTaskStatusByDownloadUrl(url, DownloadUtil.STATUS_PAUSE, task.getMApkPath());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
     }
     }
 
 
-    @Download.onTaskCancel void taskCancel(DownloadTask task) {
-//        downloadTaskService.deleteDownloadTaskByDownloadUrl(task.getKey());
+    void taskCancel(DownLoadInfo task) {
         try {
         try {
-            String url = task.getKey();
+            String url = task.getMDownloadUrl();
             int iTempPosition = -1;
             int iTempPosition = -1;
             for (int position = 0; position < downloadTasks.size(); position++) {
             for (int position = 0; position < downloadTasks.size(); position++) {
                 DownLoadInfo downLoadInfo = downloadTasks.get(position);
                 DownLoadInfo downLoadInfo = downloadTasks.get(position);
@@ -489,31 +436,57 @@ public class ActDownloadMgr extends BaseActivity {
         }
         }
     }
     }
 
 
-    @Download.onTaskFail void taskFail(DownloadTask task) {
-//        downloadTaskService.setDownloadTaskStatus(task.getKey(), DownloadTaskService.STATUS_FAIL);
+    void taskFail(DownLoadInfo task) {
         try {
         try {
-            String url = task.getKey();
+            String url = task.getMDownloadUrl();
             KFProgressButton targetBtn = lvDownloadMgr.findViewWithTag(DownloadMgrAdapter.PUBLIC_TAG_PREFIX_BUTTON + url);
             KFProgressButton targetBtn = lvDownloadMgr.findViewWithTag(DownloadMgrAdapter.PUBLIC_TAG_PREFIX_BUTTON + url);
             targetBtn.setText(R.string.download_fail);
             targetBtn.setText(R.string.download_fail);
-            setTaskStatusByDownloadUrl(url, DownloadUtil.STATUS_FAIL, task.getDownloadPath());
+            setTaskStatusByDownloadUrl(url, DownloadUtil.STATUS_FAIL, task.getMApkPath());
         } catch (Exception e) {
         } catch (Exception e) {
             e.printStackTrace();
             e.printStackTrace();
         }
         }
     }
     }
 
 
-    @Download.onTaskComplete void taskComplete(DownloadTask task) {
-//        downloadTaskService.setDownloadTaskFinish(task.getKey(), task.getDownloadPath());
+    void taskComplete(DownLoadInfo task) {
         try {
         try {
-            TextView tvProgress = lvDownloadMgr.findViewWithTag(DownloadMgrAdapter.PUBLIC_TAG_PREFIX_TEXTVIEW + task.getKey());
+            TextView tvProgress = lvDownloadMgr.findViewWithTag(DownloadMgrAdapter.PUBLIC_TAG_PREFIX_TEXTVIEW + task.getMDownloadUrl());
             tvProgress.setText(R.string.download_completed);
             tvProgress.setText(R.string.download_completed);
 
 
-            setTaskStatusByDownloadUrl(task.getKey(), DownloadUtil.STATUS_FINISH, task.getDownloadPath());
+            setTaskStatusByDownloadUrl(task.getMDownloadUrl(), DownloadUtil.STATUS_FINISH, task.getMApkPath());
         } catch (Exception e) {
         } catch (Exception e) {
             e.printStackTrace();
             e.printStackTrace();
         }
         }
-        ApkUtils.installApk(ActDownloadMgr.this, task.getDownloadPath());
+        ApkUtils.installApk(ActDownloadMgr.this, task.getMApkPath());
     }
     }
 
 
+    /**
+     * 主要的事件广播接收更新处理
+     *
+     * @param event
+     */
+    @Subscribe
+    public void onEventMainThread(BigEvent event) {
+        if (event.getData() instanceof DownLoadInfo) {
+            DownLoadInfo task = (DownLoadInfo) event.getData();
+            switch (event.getEventTypes()) {
+                case DOWNLOAD_RUNNING:
+                    running(task);
+                    break;
+                case DOWNLOAD_STOP:
+                    taskStop(task);
+                    break;
+                case DOWNLOAD_COMPLETE:
+                    taskComplete(task);
+                    break;
+                case DOWNLOAD_CANCEL:
+//                    taskCancel(task);
+                    break;
+                case DOWNLOAD_FAIL:
+                    taskFail(task);
+                    break;
+            }
+        }
+    }
 }
 }
 
 
 
 

+ 50 - 44
app/src/main/java/com/sheep/gamegroup/view/activity/ActFindGame.java

@@ -9,7 +9,6 @@ import android.support.v7.widget.AppCompatRatingBar;
 import android.support.v7.widget.RecyclerView;
 import android.support.v7.widget.RecyclerView;
 import android.text.TextUtils;
 import android.text.TextUtils;
 import android.view.View;
 import android.view.View;
-import com.tencent.smtt.sdk.WebView;
 import android.widget.ImageView;
 import android.widget.ImageView;
 import android.widget.ProgressBar;
 import android.widget.ProgressBar;
 import android.widget.RatingBar;
 import android.widget.RatingBar;
@@ -17,13 +16,10 @@ import android.widget.RelativeLayout;
 import android.widget.TextView;
 import android.widget.TextView;
 
 
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
-import com.arialyy.annotations.Download;
-import com.arialyy.aria.core.Aria;
-import com.arialyy.aria.core.download.DownloadTask;
-import com.sheep.gamegroup.event.BigEvent;
-import com.sheep.gamegroup.util.DownloadUtil;
 import com.kfzs.duanduan.utils.StatusBarUtils;
 import com.kfzs.duanduan.utils.StatusBarUtils;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.absBase.BaseActivity;
+import com.sheep.gamegroup.event.BigEvent;
+import com.sheep.gamegroup.greendao.download.DownLoadInfo;
 import com.sheep.gamegroup.helper.ImageListHelper;
 import com.sheep.gamegroup.helper.ImageListHelper;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.FindApp;
 import com.sheep.gamegroup.model.entity.FindApp;
@@ -33,6 +29,7 @@ import com.sheep.gamegroup.model.entity.UserEntity;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.DataUtil;
 import com.sheep.gamegroup.util.DataUtil;
+import com.sheep.gamegroup.util.DownloadUtil;
 import com.sheep.gamegroup.util.GlideImageLoader;
 import com.sheep.gamegroup.util.GlideImageLoader;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.ListUtil;
@@ -43,6 +40,7 @@ import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
 import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
+import com.tencent.smtt.sdk.WebView;
 
 
 import org.afinal.simplecache.ApiKey;
 import org.afinal.simplecache.ApiKey;
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.EventBus;
@@ -97,7 +95,6 @@ public class ActFindGame extends BaseActivity {
                 });
                 });
 
 
         EventBus.getDefault().register(this);
         EventBus.getDefault().register(this);
-        Aria.download(this).register();
 
 
         RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, G.BAR_HEIGHT);
         RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, G.BAR_HEIGHT);
         status_height_view.setLayoutParams(params);
         status_height_view.setLayoutParams(params);
@@ -127,7 +124,7 @@ public class ActFindGame extends BaseActivity {
                 int topRow2 = (titleHeight - find_game_name_tv.getHeight()) / 2;
                 int topRow2 = (titleHeight - find_game_name_tv.getHeight()) / 2;
                 int leftRow = topRow2 / 4;//isNeedReservation ? topRow : 5 * topRow;
                 int leftRow = topRow2 / 4;//isNeedReservation ? topRow : 5 * topRow;
 
 
-                int willTop = Math.max(topRow/2, find_game_top + verticalOffset);
+                int willTop = Math.max(topRow / 2, find_game_top + verticalOffset);
                 int row = (find_icon_with * willTop + titleHeight * (find_game_top - willTop)) / find_game_top - topRow;
                 int row = (find_icon_with * willTop + titleHeight * (find_game_top - willTop)) / find_game_top - topRow;
                 RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) find_game_iv.getLayoutParams();
                 RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) find_game_iv.getLayoutParams();
                 layoutParams.leftMargin = Math.max(titleWidth, (G.WIDTH - find_icon_with) / 2 + verticalOffset);
                 layoutParams.leftMargin = Math.max(titleWidth, (G.WIDTH - find_icon_with) / 2 + verticalOffset);
@@ -156,7 +153,7 @@ public class ActFindGame extends BaseActivity {
                 RelativeLayout.LayoutParams layoutParams5 = (RelativeLayout.LayoutParams) find_game_xin.getLayoutParams();
                 RelativeLayout.LayoutParams layoutParams5 = (RelativeLayout.LayoutParams) find_game_xin.getLayoutParams();
                 layoutParams5.topMargin = getResources().getDimensionPixelSize(R.dimen.find_game_top5) + verticalOffset;
                 layoutParams5.topMargin = getResources().getDimensionPixelSize(R.dimen.find_game_top5) + verticalOffset;
                 find_game_xin.setLayoutParams(layoutParams5);
                 find_game_xin.setLayoutParams(layoutParams5);
-                if (willTop == topRow/2) {
+                if (willTop == topRow / 2) {
                     if (mIsExpanded) {
                     if (mIsExpanded) {
 //                        txt_baseactivity_title.setVisibility(View.INVISIBLE);
 //                        txt_baseactivity_title.setVisibility(View.INVISIBLE);
                         find_game_bar.setVisibility(View.VISIBLE);
                         find_game_bar.setVisibility(View.VISIBLE);
@@ -181,7 +178,7 @@ public class ActFindGame extends BaseActivity {
         resetAppScoreNum();
         resetAppScoreNum();
         resetMyAppScore();
         resetMyAppScore();
         resetUserInfo();
         resetUserInfo();
-        if(isShowAppScore) {
+        if (isShowAppScore) {
             find_game_score_no.setVisibility(View.VISIBLE);
             find_game_score_no.setVisibility(View.VISIBLE);
             find_game_score_my.setVisibility(View.VISIBLE);
             find_game_score_my.setVisibility(View.VISIBLE);
         }
         }
@@ -198,16 +195,16 @@ public class ActFindGame extends BaseActivity {
     @Override
     @Override
     public void initData() {
     public void initData() {
         FindApp findApp = DataUtil.getInstance().getCacheResult(ApiKey.applications(id), FindApp.class);
         FindApp findApp = DataUtil.getInstance().getCacheResult(ApiKey.applications(id), FindApp.class);
-        if(findApp != null){
+        if (findApp != null) {
             loadApp(findApp);
             loadApp(findApp);
         }
         }
         initFindAppFromNet();
         initFindAppFromNet();
-        if(isShowAppScore) {
+        if (isShowAppScore) {
             initAppScoreNum();
             initAppScoreNum();
             initMyAppScore();
             initMyAppScore();
         }
         }
         UserEntity userEntity = DataUtil.getInstance().getUserEntity();
         UserEntity userEntity = DataUtil.getInstance().getUserEntity();
-        if(userEntity == null) {
+        if (userEntity == null) {
             CommonUtil.getInstance().updateUserInfo(new Action1<UserEntity>() {
             CommonUtil.getInstance().updateUserInfo(new Action1<UserEntity>() {
                 @Override
                 @Override
                 public void call(UserEntity userEntity) {
                 public void call(UserEntity userEntity) {
@@ -232,7 +229,7 @@ public class ActFindGame extends BaseActivity {
                     @Override
                     @Override
                     public void onNext(BaseMessage baseMessage) {
                     public void onNext(BaseMessage baseMessage) {
                         boolean isNewData = DataUtil.getInstance().isNewData(ApiKey.applications(id));
                         boolean isNewData = DataUtil.getInstance().isNewData(ApiKey.applications(id));
-                        if(isNewData) {
+                        if (isNewData) {
                             FindApp findApp = baseMessage.getData(FindApp.class);
                             FindApp findApp = baseMessage.getData(FindApp.class);
                             loadApp(findApp);
                             loadApp(findApp);
                         }
                         }
@@ -258,7 +255,7 @@ public class ActFindGame extends BaseActivity {
 
 
     private void initAppScoreNum() {
     private void initAppScoreNum() {
         List<FindAppScore> findAppScoreList = DataUtil.getInstance().getCacheList(ApiKey.score_num(id), FindAppScore.class);
         List<FindAppScore> findAppScoreList = DataUtil.getInstance().getCacheList(ApiKey.score_num(id), FindAppScore.class);
-        if(!findAppScoreList.isEmpty()) {
+        if (!findAppScoreList.isEmpty()) {
             loadAppScoreNum(findAppScoreList);
             loadAppScoreNum(findAppScoreList);
         }
         }
         SheepApp.getInstance().getNetComponent().getApiService().getAppScoreNum(id)
         SheepApp.getInstance().getNetComponent().getApiService().getAppScoreNum(id)
@@ -280,6 +277,7 @@ public class ActFindGame extends BaseActivity {
                     }
                     }
                 });
                 });
     }
     }
+
     private void initMyAppScore() {
     private void initMyAppScore() {
         MyFindAppCore myFindAppCore = DataUtil.getInstance().getCacheResult(ApiKey.my_score(id), MyFindAppCore.class);
         MyFindAppCore myFindAppCore = DataUtil.getInstance().getCacheResult(ApiKey.my_score(id), MyFindAppCore.class);
         if (myFindAppCore == null) {
         if (myFindAppCore == null) {
@@ -343,6 +341,7 @@ public class ActFindGame extends BaseActivity {
 
 
     private FindApp findApp;
     private FindApp findApp;
     private boolean isNeedReservation = false;
     private boolean isNeedReservation = false;
+
     private void loadData(final FindApp findApp) {
     private void loadData(final FindApp findApp) {
         this.findApp = findApp;
         this.findApp = findApp;
         //游戏简介与下载
         //游戏简介与下载
@@ -517,8 +516,8 @@ public class ActFindGame extends BaseActivity {
     private Map<String, TextView> downLoadTextViewMap = new HashMap<>();
     private Map<String, TextView> downLoadTextViewMap = new HashMap<>();
 
 
     //获取任务对应的TextView来更新进度
     //获取任务对应的TextView来更新进度
-    private TextView getTextViewByTask(DownloadTask task) {
-        return getTextViewByKey(task.getKey());
+    private TextView getTextViewByTask(DownLoadInfo task) {
+        return getTextViewByKey(task.getMDownloadUrl());
     }
     }
 
 
     private TextView getTextViewByKey(String key) {
     private TextView getTextViewByKey(String key) {
@@ -529,12 +528,11 @@ public class ActFindGame extends BaseActivity {
 
 
     //更新按钮状态与添加点击事件
     //更新按钮状态与添加点击事件
     private void updateView(Activity activity, FindApp findApp, TextView textView) {
     private void updateView(Activity activity, FindApp findApp, TextView textView) {
-        if(findApp.getAvailable_receive() == 0 && findApp.getReceive_account() == 0){//未领取账号
+        if (findApp.getAvailable_receive() == 0 && findApp.getReceive_account() == 0) {//未领取账号
 
 
             CommonUtil.getInstance()
             CommonUtil.getInstance()
                     .xiaomiRevieceAcctoun(find_game_down_tv, findApp, activity);
                     .xiaomiRevieceAcctoun(find_game_down_tv, findApp, activity);
-        }else
-        if (findApp.isCanDownload()) {//可下载
+        } else if (findApp.isCanDownload()) {//可下载
             downLoadTextViewMap.put(findApp.getDownload_link(), textView);
             downLoadTextViewMap.put(findApp.getDownload_link(), textView);
             downLoadTextViewMap.put(findApp.getPackage_name(), textView);
             downLoadTextViewMap.put(findApp.getPackage_name(), textView);
             findApp.getFindAppHelper().updateDownloadTaskView(activity, findApp, textView);
             findApp.getFindAppHelper().updateDownloadTaskView(activity, findApp, textView);
@@ -542,26 +540,23 @@ public class ActFindGame extends BaseActivity {
             findApp.getFindAppHelper().updateReservationView(activity, findApp, textView);
             findApp.getFindAppHelper().updateReservationView(activity, findApp, textView);
         }
         }
     }
     }
-    //下载状态监听
 
 
-    @Download.onPre
-    void onPre(DownloadTask task) {
+    //下载状态监听
+    void onPre(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
         if (textView != null) {
         if (textView != null) {
             textView.setText("准备下载中");
             textView.setText("准备下载中");
         }
         }
     }
     }
 
 
-    @Download.onTaskStart
-    void taskStart(DownloadTask task) {
+    void taskStart(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
         if (textView != null) {
         if (textView != null) {
             textView.setText("开始下载中");
             textView.setText("开始下载中");
         }
         }
     }
     }
 
 
-    @Download.onTaskResume
-    void taskResume(DownloadTask task) {
+    void taskResume(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
         if (textView != null) {
         if (textView != null) {
             textView.setText("恢复下载中");
             textView.setText("恢复下载中");
@@ -569,49 +564,40 @@ public class ActFindGame extends BaseActivity {
     }
     }
 
 
     //在这里处理任务执行中的状态,如进度进度条的刷新
     //在这里处理任务执行中的状态,如进度进度条的刷新
-    @Download.onTaskRunning
-    protected void running(DownloadTask task) {
+    protected void running(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
         if (textView != null) {
         if (textView != null) {
-            textView.setText(String.format(Locale.CHINA, "%d%%(%s)", Math.abs(task.getPercent()), task.getConvertSpeed()));//添加下载速度
+            textView.setText(String.format(Locale.CHINA, "%d%%(%s)", Math.abs(task.getMPercent()), task.getAverageSpeed()));//添加下载速度
         }
         }
     }
     }
 
 
-    @Download.onTaskStop
-    void taskStop(DownloadTask task) {
+    void taskStop(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
         if (textView != null) {
         if (textView != null) {
             textView.setText(CommonUtil.CONTINUE_DOWNLOAD);
             textView.setText(CommonUtil.CONTINUE_DOWNLOAD);
         }
         }
     }
     }
 
 
-    @Download.onNoSupportBreakPoint
-    void onNoSupportBreakPoint(DownloadTask task) {
-    }
-
-    @Download.onTaskCancel
-    void taskCancel(DownloadTask task) {
+    void taskCancel(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
         if (textView != null) {
         if (textView != null) {
             textView.setText("已经取消");
             textView.setText("已经取消");
         }
         }
     }
     }
 
 
-    @Download.onTaskFail
-    void taskFail(DownloadTask task) {
+    void taskFail(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
         if (textView != null) {
         if (textView != null) {
             textView.setText(CommonUtil.FAIL_DOWNLOAD);
             textView.setText(CommonUtil.FAIL_DOWNLOAD);
         }
         }
     }
     }
 
 
-    @Download.onTaskComplete
-    void taskComplete(DownloadTask task) {
+    void taskComplete(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
         if (textView != null) {
         if (textView != null) {
             textView.setText(CommonUtil.START_INSTALL);
             textView.setText(CommonUtil.START_INSTALL);
         }
         }
-        if (findApp != null && TextUtils.equals(task.getKey(), findApp.getDownload_link()))
+        if (findApp != null && TextUtils.equals(task.getMDownloadUrl(), findApp.getDownload_link()))
             findApp.updateState(DownloadUtil.STATUS_FINISH);
             findApp.updateState(DownloadUtil.STATUS_FINISH);
     }
     }
 
 
@@ -657,11 +643,31 @@ public class ActFindGame extends BaseActivity {
 
 
     @Subscribe
     @Subscribe
     public void onEventMainThread(BigEvent event) {
     public void onEventMainThread(BigEvent event) {
-        switch (event.getEventTypes()){
+        switch (event.getEventTypes()) {
             case REFRESH_XIAOMI_GAME_LIST:
             case REFRESH_XIAOMI_GAME_LIST:
                 initData();
                 initData();
                 break;
                 break;
         }
         }
+        if (event.getData() instanceof DownLoadInfo) {
+            DownLoadInfo task = (DownLoadInfo) event.getData();
+            switch (event.getEventTypes()) {
+                case DOWNLOAD_RUNNING:
+                    running(task);
+                    break;
+                case DOWNLOAD_STOP:
+                    taskStop(task);
+                    break;
+                case DOWNLOAD_COMPLETE:
+                    taskComplete(task);
+                    break;
+                case DOWNLOAD_CANCEL:
+                    taskCancel(task);
+                    break;
+                case DOWNLOAD_FAIL:
+                    taskFail(task);
+                    break;
+            }
+        }
     }
     }
 
 
     @Override
     @Override

+ 48 - 44
app/src/main/java/com/sheep/gamegroup/view/activity/ActFindInformation.java

@@ -17,7 +17,6 @@ import android.view.MotionEvent;
 import android.view.View;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.ViewGroup;
 import android.view.WindowManager;
 import android.view.WindowManager;
-
 import android.webkit.WebChromeClient;
 import android.webkit.WebChromeClient;
 import android.webkit.WebSettings;
 import android.webkit.WebSettings;
 import android.webkit.WebView;
 import android.webkit.WebView;
@@ -26,24 +25,22 @@ import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.ImageView;
 import android.widget.TextView;
 import android.widget.TextView;
 
 
-import com.arialyy.annotations.Download;
-import com.arialyy.aria.core.Aria;
-import com.arialyy.aria.core.download.DownloadTask;
-import com.sheep.gamegroup.event.BigEvent;
-import com.sheep.gamegroup.util.DownloadUtil;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.absBase.BaseActivity;
+import com.sheep.gamegroup.event.BigEvent;
+import com.sheep.gamegroup.greendao.download.DownLoadInfo;
+import com.sheep.gamegroup.helper.TaskHelper;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.FindApp;
 import com.sheep.gamegroup.model.entity.FindApp;
 import com.sheep.gamegroup.model.entity.FindItem;
 import com.sheep.gamegroup.model.entity.FindItem;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.DataUtil;
 import com.sheep.gamegroup.util.DataUtil;
+import com.sheep.gamegroup.util.DownloadUtil;
 import com.sheep.gamegroup.util.GlideImageLoader;
 import com.sheep.gamegroup.util.GlideImageLoader;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.SysAppUtil;
 import com.sheep.gamegroup.util.SysAppUtil;
-import com.sheep.gamegroup.helper.TaskHelper;
 import com.sheep.gamegroup.util.TimeUtil;
 import com.sheep.gamegroup.util.TimeUtil;
 import com.sheep.gamegroup.util.ViewHolder;
 import com.sheep.gamegroup.util.ViewHolder;
 import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.gamegroup.util.ViewUtil;
@@ -110,7 +107,7 @@ public class ActFindInformation extends BaseActivity implements Action1<Integer>
         id = getIntent().getIntExtra("id", 0);
         id = getIntent().getIntExtra("id", 0);
 
 
         TitleBarUtils.getInstance()
         TitleBarUtils.getInstance()
-                .setTitle(this,"详情")
+                .setTitle(this, "详情")
                 .setTitleFinish(this)
                 .setTitleFinish(this)
                 .setRightImgBotton(this, R.mipmap.share, new View.OnClickListener() {
                 .setRightImgBotton(this, R.mipmap.share, new View.OnClickListener() {
                     @Override
                     @Override
@@ -121,7 +118,6 @@ public class ActFindInformation extends BaseActivity implements Action1<Integer>
                 });
                 });
 
 
         EventBus.getDefault().register(this);
         EventBus.getDefault().register(this);
-        Aria.download(this).register();
 
 
         refresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
         refresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
             @Override
             @Override
@@ -197,7 +193,7 @@ public class ActFindInformation extends BaseActivity implements Action1<Integer>
             @Override
             @Override
             public boolean shouldOverrideUrlLoading(WebView view, String url) {
             public boolean shouldOverrideUrlLoading(WebView view, String url) {
                 //Android8.0以下的需要返回true 并且需要loadUrl;8.0之后效果相反
                 //Android8.0以下的需要返回true 并且需要loadUrl;8.0之后效果相反
-                if(Build.VERSION.SDK_INT<26) {
+                if (Build.VERSION.SDK_INT < 26) {
                     webView.loadUrl(url);
                     webView.loadUrl(url);
                     Jump2View.getInstance().goWeb(ActFindInformation.this, url);
                     Jump2View.getInstance().goWeb(ActFindInformation.this, url);
                     return true;
                     return true;
@@ -497,7 +493,7 @@ public class ActFindInformation extends BaseActivity implements Action1<Integer>
     private FindItem findItem;
     private FindItem findItem;
 
 
     private void notifyDataSetChanged() {
     private void notifyDataSetChanged() {
-        if(empty_view == null){
+        if (empty_view == null) {
             return;
             return;
         }
         }
         CommonUtil.getInstance().updateEmptyView(empty_view, list.isEmpty());
         CommonUtil.getInstance().updateEmptyView(empty_view, list.isEmpty());
@@ -509,8 +505,8 @@ public class ActFindInformation extends BaseActivity implements Action1<Integer>
     private Map<String, TextView> downLoadTextViewMap = new HashMap<>();
     private Map<String, TextView> downLoadTextViewMap = new HashMap<>();
 
 
     //获取任务对应的TextView来更新进度
     //获取任务对应的TextView来更新进度
-    private TextView getTextViewByTask(DownloadTask task) {
-        return getTextViewByKey(task.getKey());
+    private TextView getTextViewByTask(DownLoadInfo task) {
+        return getTextViewByKey(task.getMDownloadUrl());
     }
     }
 
 
     private TextView getTextViewByKey(String key) {
     private TextView getTextViewByKey(String key) {
@@ -532,24 +528,21 @@ public class ActFindInformation extends BaseActivity implements Action1<Integer>
 
 
     //下载状态监听
     //下载状态监听
 
 
-    @Download.onPre
-    void onPre(DownloadTask task) {
+    void onPre(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
         if (textView != null) {
         if (textView != null) {
             textView.setText("准备下载中");
             textView.setText("准备下载中");
         }
         }
     }
     }
 
 
-    @Download.onTaskStart
-    void taskStart(DownloadTask task) {
+    void taskStart(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
         if (textView != null) {
         if (textView != null) {
             textView.setText("开始下载中");
             textView.setText("开始下载中");
         }
         }
     }
     }
 
 
-    @Download.onTaskResume
-    void taskResume(DownloadTask task) {
+    void taskResume(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
         if (textView != null) {
         if (textView != null) {
             textView.setText("恢复下载中");
             textView.setText("恢复下载中");
@@ -557,53 +550,73 @@ public class ActFindInformation extends BaseActivity implements Action1<Integer>
     }
     }
 
 
     //在这里处理任务执行中的状态,如进度进度条的刷新
     //在这里处理任务执行中的状态,如进度进度条的刷新
-    @Download.onTaskRunning
-    protected void running(DownloadTask task) {
+    protected void running(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
         if (textView != null) {
         if (textView != null) {
-            textView.setText(String.format(Locale.CHINA, "%d%%(%s)", Math.abs(task.getPercent()), task.getConvertSpeed()));//添加下载速度
+            textView.setText(String.format(Locale.CHINA, "%d%%(%s)", Math.abs(task.getMPercent()), task.getAverageSpeed()));//添加下载速度
         }
         }
     }
     }
 
 
-    @Download.onTaskStop
-    void taskStop(DownloadTask task) {
+    void taskStop(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
         if (textView != null) {
         if (textView != null) {
             textView.setText(CommonUtil.CONTINUE_DOWNLOAD);
             textView.setText(CommonUtil.CONTINUE_DOWNLOAD);
         }
         }
     }
     }
 
 
-    @Download.onNoSupportBreakPoint
-    void onNoSupportBreakPoint(DownloadTask task) {
-    }
-
-    @Download.onTaskCancel
-    void taskCancel(DownloadTask task) {
+    void taskCancel(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
         if (textView != null) {
         if (textView != null) {
             textView.setText("已经取消");
             textView.setText("已经取消");
         }
         }
     }
     }
 
 
-    @Download.onTaskFail
-    void taskFail(DownloadTask task) {
+    void taskFail(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
         if (textView != null) {
         if (textView != null) {
             textView.setText(CommonUtil.FAIL_DOWNLOAD);
             textView.setText(CommonUtil.FAIL_DOWNLOAD);
         }
         }
     }
     }
 
 
-    @Download.onTaskComplete
-    void taskComplete(DownloadTask task) {
+    void taskComplete(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
         if (textView != null) {
         if (textView != null) {
             textView.setText(CommonUtil.START_INSTALL);
             textView.setText(CommonUtil.START_INSTALL);
         }
         }
-        if (findApp != null && TextUtils.equals(task.getKey(), findApp.getDownload_link()))
+        if (findApp != null && TextUtils.equals(task.getMDownloadUrl(), findApp.getDownload_link()))
             findApp.updateState(DownloadUtil.STATUS_FINISH);
             findApp.updateState(DownloadUtil.STATUS_FINISH);
     }
     }
 
 
     @Subscribe
     @Subscribe
+    public void onEventMainThread(BigEvent event) {
+        switch (event.getEventTypes()) {
+            case ONFRESH_TRYMAKEMANY_PAGE:
+                taskHelper.refreshTask();
+                break;
+        }
+        if (event.getData() instanceof DownLoadInfo) {
+            DownLoadInfo task = (DownLoadInfo) event.getData();
+            switch (event.getEventTypes()) {
+                case DOWNLOAD_RUNNING:
+                    running(task);
+                    break;
+                case DOWNLOAD_STOP:
+                    taskStop(task);
+                    break;
+                case DOWNLOAD_COMPLETE:
+                    taskComplete(task);
+                    break;
+                case DOWNLOAD_CANCEL:
+                    taskCancel(task);
+                    break;
+                case DOWNLOAD_FAIL:
+                    taskFail(task);
+                    break;
+            }
+        }
+    }
+
+    @Subscribe
     public void onEventMainThread(Intent intent) {
     public void onEventMainThread(Intent intent) {
         if (intent != null && intent.getAction() != null && intent.getDataString() != null && intent.getDataString().contains("package:")) {
         if (intent != null && intent.getAction() != null && intent.getDataString() != null && intent.getDataString().contains("package:")) {
             String packageName = intent.getDataString().replace("package:", "");
             String packageName = intent.getDataString().replace("package:", "");
@@ -684,15 +697,6 @@ public class ActFindInformation extends BaseActivity implements Action1<Integer>
         }
         }
     }
     }
 
 
-    @Subscribe
-    public void onEventMainThread(BigEvent event) {
-        switch (event.getEventTypes()) {
-            case ONFRESH_TRYMAKEMANY_PAGE:
-                taskHelper.refreshTask();
-                break;
-        }
-    }
-
     @Override
     @Override
     protected void onPause() {
     protected void onPause() {
         super.onPause();
         super.onPause();

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/view/activity/ActInstallApkList.java

@@ -6,10 +6,10 @@ import android.view.View;
 import android.widget.ImageView;
 import android.widget.ImageView;
 import android.widget.TextView;
 import android.widget.TextView;
 
 
-import com.arialyy.aria.util.CommonUtil;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.model.entity.AppInfo;
 import com.sheep.gamegroup.model.entity.AppInfo;
 import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.LogUtil;
+import com.sheep.gamegroup.util.Md5Util;
 import com.sheep.gamegroup.util.StringUtils;
 import com.sheep.gamegroup.util.StringUtils;
 import com.sheep.gamegroup.util.SysAppUtil;
 import com.sheep.gamegroup.util.SysAppUtil;
 import com.sheep.gamegroup.util.ViewHolder;
 import com.sheep.gamegroup.util.ViewHolder;
@@ -84,7 +84,7 @@ public class ActInstallApkList extends BaseActivity {
 
 
                 app_info_iv.setImageDrawable(appInfo.getIcon());
                 app_info_iv.setImageDrawable(appInfo.getIcon());
                 ViewUtil.setText(app_info_name_tv, appInfo.getAppName());
                 ViewUtil.setText(app_info_name_tv, appInfo.getAppName());
-                app_info_name_tv.append(CommonUtil.getFileMD5(new File(appInfo.getSourceDir())));
+                app_info_name_tv.append(Md5Util.getFileMD5(new File(appInfo.getSourceDir())));
                 ViewUtil.setText(app_info_package_name_tv, appInfo.getPackageName());
                 ViewUtil.setText(app_info_package_name_tv, appInfo.getPackageName());
                 ViewUtil.setText(app_info_size_tv, appInfo.getApkSize());
                 ViewUtil.setText(app_info_size_tv, appInfo.getApkSize());
                 ViewUtil.setText(app_info_path_tv, appInfo.getSourceDir()+"\n"+appInfo.getSha1());
                 ViewUtil.setText(app_info_path_tv, appInfo.getSourceDir()+"\n"+appInfo.getSha1());

+ 43 - 48
app/src/main/java/com/sheep/gamegroup/view/activity/ActMain.java

@@ -15,14 +15,13 @@ import android.widget.LinearLayout;
 import android.widget.RelativeLayout;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 import android.widget.TextView;
 
 
-import com.arialyy.aria.core.download.DownloadTask;
 import com.kfzs.duanduan.utils.StatusBarUtils;
 import com.kfzs.duanduan.utils.StatusBarUtils;
 import com.kfzs.duanduan.view.DialogStorageLow;
 import com.kfzs.duanduan.view.DialogStorageLow;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.event.BigEvent;
 import com.sheep.gamegroup.event.BigEvent;
+import com.sheep.gamegroup.greendao.download.DownLoadInfo;
 import com.sheep.gamegroup.helper.DownloadHelper;
 import com.sheep.gamegroup.helper.DownloadHelper;
 import com.sheep.gamegroup.model.entity.Container;
 import com.sheep.gamegroup.model.entity.Container;
-import com.sheep.gamegroup.model.entity.FindApp;
 import com.sheep.gamegroup.util.ActionUtil;
 import com.sheep.gamegroup.util.ActionUtil;
 import com.sheep.gamegroup.util.ChannelContent;
 import com.sheep.gamegroup.util.ChannelContent;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.CommonUtil;
@@ -49,10 +48,8 @@ import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
 import org.greenrobot.eventbus.Subscribe;
 
 
 import java.util.ArrayList;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.Locale;
 import java.util.Locale;
-import java.util.Map;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeUnit;
 
 
 import butterknife.BindView;
 import butterknife.BindView;
@@ -93,7 +90,7 @@ public class ActMain extends BaseActivity {
         super.onStart();
         super.onStart();
     }
     }
 
 
-    private void init(){
+    private void init() {
         //判断当前版本在4.0以上并且存在虚拟按键,否则不做操作
         //判断当前版本在4.0以上并且存在虚拟按键,否则不做操作
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && G.checkDeviceHasNavigationBar(this)) {
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && G.checkDeviceHasNavigationBar(this)) {
             //一定要判断是否存在按键,否则在没有按键的手机调用会影响别的功能。如之前没有考虑到,导致图传全屏变成小屏显示。
             //一定要判断是否存在按键,否则在没有按键的手机调用会影响别的功能。如之前没有考虑到,导致图传全屏变成小屏显示。
@@ -112,6 +109,7 @@ public class ActMain extends BaseActivity {
     public boolean onTouchEvent(MotionEvent event) {
     public boolean onTouchEvent(MotionEvent event) {
         return false;
         return false;
     }
     }
+
     private View decorView;
     private View decorView;
 
 
     public static final String FIRST_SHOW_MAIN = "first_show_main";//是否是第一次显示主页
     public static final String FIRST_SHOW_MAIN = "first_show_main";//是否是第一次显示主页
@@ -326,17 +324,18 @@ public class ActMain extends BaseActivity {
     }
     }
 
 
     private int onResumeCount = 0;//调用onResume次数
     private int onResumeCount = 0;//调用onResume次数
+
     @Override
     @Override
     protected void onResume() {
     protected void onResume() {
         super.onResume();
         super.onResume();
         if (container != null && container.getT() != null)
         if (container != null && container.getT() != null)
             container.getT().call(1);
             container.getT().call(1);
-        if(checkNextAction(MiddleSchemeAct.SHOW_DIALOG_GAME_OR_GIFT_TASK)) {
-            if(onResumeCount == 0) {
+        if (checkNextAction(MiddleSchemeAct.SHOW_DIALOG_GAME_OR_GIFT_TASK)) {
+            if (onResumeCount == 0) {
                 DataUtil.putAsBoolean("tryShowHalfScreenAd", true);
                 DataUtil.putAsBoolean("tryShowHalfScreenAd", true);
             }
             }
         } else {
         } else {
-            if(onResumeCount == 0) {
+            if (onResumeCount == 0) {
                 SysAppUtil.showVersionInfo(this, SpUtils.getIgnoreMd5(), new Action1<Integer>() {
                 SysAppUtil.showVersionInfo(this, SpUtils.getIgnoreMd5(), new Action1<Integer>() {
                     @Override
                     @Override
                     public void call(Integer integer) {
                     public void call(Integer integer) {
@@ -345,7 +344,7 @@ public class ActMain extends BaseActivity {
                 });
                 });
             }
             }
         }
         }
-        onResumeCount ++;
+        onResumeCount++;
     }
     }
 
 
     @Override
     @Override
@@ -401,60 +400,56 @@ public class ActMain extends BaseActivity {
             case STORAGE_LOW:
             case STORAGE_LOW:
                 DialogStorageLow.showDialog(this);
                 DialogStorageLow.showDialog(this);
                 break;
                 break;
-            default:
-                if(progressView != null) {
-                    if (event.getData() instanceof DownloadTask) {
-                        DownloadTask task = (DownloadTask) event.getData();
-                        String url = task.getKey();
-                        TextView tvProgress = progressView.findViewWithTag(PUBLIC_TAG_PREFIX_TEXTVIEW_LIST + url);
-                        if(tvProgress != null) {
-                            switch (event.getEventTypes()) {
-                                case GENERATION_ACCOUNT_REFRESH_ADAPTER:
-                                    try {
-                                        int p = task.getPercent();    //任务进度百分比
-                                        tvProgress.setText(String.format(Locale.CHINA, "%d%%", Math.abs(p)));
-
-                                    } catch (Exception e) {
-                                        e.printStackTrace();
-                                    }
-                                    break;
-                                case DOWNLOAD_STOP:
-                                    tvProgress.setText("继续下载");
-                                    break;
-                                case DOWNLOAD_COMPLETE:
-                                    tvProgress.setText("安装游戏");
-                                    if(downloadHelper != null)
-                                        downloadHelper.updateState(DownloadUtil.STATUS_FINISH);
-                                    break;
-                                case DOWNLOAD_CANCEL:
-                                    tvProgress.setText("下载取消");
-                                    break;
-                                case DOWNLOAD_FAIL:
-                                    tvProgress.setText("下载失败");
-                                    break;
-                            }
+        }
+        if (progressView != null && event.getData() instanceof DownLoadInfo) {
+            DownLoadInfo task = (DownLoadInfo) event.getData();
+            String url = task.getMDownloadUrl();
+            TextView tvProgress = progressView.findViewWithTag(PUBLIC_TAG_PREFIX_TEXTVIEW_LIST + url);
+            if (tvProgress != null) {
+                switch (event.getEventTypes()) {
+                    case DOWNLOAD_RUNNING:
+                        try {
+                            int p = task.getMPercent();    //任务进度百分比
+                            tvProgress.setText(String.format(Locale.CHINA, "%d%%", Math.abs(p)));
+
+                        } catch (Exception e) {
+                            e.printStackTrace();
                         }
                         }
-                    }
+                        break;
+                    case DOWNLOAD_STOP:
+                        tvProgress.setText("继续下载");
+                        break;
+                    case DOWNLOAD_COMPLETE:
+                        tvProgress.setText("安装游戏");
+                        if (downloadHelper != null)
+                            downloadHelper.updateState(DownloadUtil.STATUS_FINISH);
+                        break;
+                    case DOWNLOAD_CANCEL:
+                        tvProgress.setText("下载取消");
+                        break;
+                    case DOWNLOAD_FAIL:
+                        tvProgress.setText("下载失败");
+                        break;
                 }
                 }
-                break;
+            }
         }
         }
     }
     }
 
 
     @Subscribe
     @Subscribe
     public void onEventMainThread(Intent intent) {
     public void onEventMainThread(Intent intent) {
-        if(intent != null && intent.getAction() != null && intent.getDataString() != null && intent.getDataString().contains("package:")){
-            String packageName = intent.getDataString().replace("package:","");
+        if (intent != null && intent.getAction() != null && intent.getDataString() != null && intent.getDataString().contains("package:")) {
+            String packageName = intent.getDataString().replace("package:", "");
 
 
             TextView tvProgress = progressView.findViewWithTag(PUBLIC_TAG_PREFIX_TEXTVIEW_LIST + url);
             TextView tvProgress = progressView.findViewWithTag(PUBLIC_TAG_PREFIX_TEXTVIEW_LIST + url);
-            if(tvProgress != null && downloadHelper != null && TextUtils.equals(packageName, this.packageName)) {
-                switch (intent.getAction()){
+            if (tvProgress != null && downloadHelper != null && TextUtils.equals(packageName, this.packageName)) {
+                switch (intent.getAction()) {
                     case ACTION_PACKAGE_ADDED:
                     case ACTION_PACKAGE_ADDED:
                         tvProgress.setText(CommonUtil.GAME_OPEN);
                         tvProgress.setText(CommonUtil.GAME_OPEN);
                         downloadHelper.updateState(DownloadUtil.STATUS_INSTALLED);
                         downloadHelper.updateState(DownloadUtil.STATUS_INSTALLED);
                         break;
                         break;
                     case ACTION_PACKAGE_REMOVED:
                     case ACTION_PACKAGE_REMOVED:
                         String path = PackageUtil.isExistsFile(packageName, url);
                         String path = PackageUtil.isExistsFile(packageName, url);
-                        if(TextUtils.isEmpty(path)) {
+                        if (TextUtils.isEmpty(path)) {
                             downloadHelper.updateState(DownloadUtil.STATUS_INIT);
                             downloadHelper.updateState(DownloadUtil.STATUS_INIT);
                             tvProgress.setText(CommonUtil.START_DOWNLOAD);
                             tvProgress.setText(CommonUtil.START_DOWNLOAD);
                         } else {
                         } else {

+ 73 - 68
app/src/main/java/com/sheep/gamegroup/view/activity/ActPlayGameDetail.java

@@ -13,22 +13,20 @@ import android.widget.LinearLayout;
 import android.widget.RelativeLayout;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 import android.widget.TextView;
 
 
-import com.arialyy.annotations.Download;
-import com.arialyy.aria.core.Aria;
-import com.arialyy.aria.core.download.DownloadTask;
-import com.sheep.gamegroup.event.BigEvent;
-import com.sheep.gamegroup.view.adapter.TitleFragmentListAdapter;
-import com.sheep.gamegroup.util.DownloadUtil;
 import com.kfzs.duanduan.view.ViewPagerAutoHeigh;
 import com.kfzs.duanduan.view.ViewPagerAutoHeigh;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.absBase.BaseActivity;
+import com.sheep.gamegroup.event.BigEvent;
+import com.sheep.gamegroup.greendao.download.DownLoadInfo;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.GameEntity;
 import com.sheep.gamegroup.model.entity.GameEntity;
 import com.sheep.gamegroup.model.entity.PlayGameEntity;
 import com.sheep.gamegroup.model.entity.PlayGameEntity;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.DataUtil;
 import com.sheep.gamegroup.util.DataUtil;
+import com.sheep.gamegroup.util.DownloadUtil;
 import com.sheep.gamegroup.util.GlideImageLoader;
 import com.sheep.gamegroup.util.GlideImageLoader;
 import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.gamegroup.view.adapter.TitleFragmentListAdapter;
 import com.sheep.gamegroup.view.fragment.FgtPlaGameGift;
 import com.sheep.gamegroup.view.fragment.FgtPlaGameGift;
 import com.sheep.gamegroup.view.fragment.FgtPlayGameDetail;
 import com.sheep.gamegroup.view.fragment.FgtPlayGameDetail;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.R;
@@ -117,7 +115,6 @@ public class ActPlayGameDetail extends BaseActivity implements Action1<Integer>
                 .setTitle(this, "详情")
                 .setTitle(this, "详情")
                 .setTitleFinish(this);
                 .setTitleFinish(this);
         EventBus.getDefault().register(this);
         EventBus.getDefault().register(this);
-        Aria.download(this).register();
 
 
         mAdapter = new TitleFragmentListAdapter(getSupportFragmentManager());
         mAdapter = new TitleFragmentListAdapter(getSupportFragmentManager());
         txt_baseactivity_title.setVisibility(View.INVISIBLE);//不显示标题栏
         txt_baseactivity_title.setVisibility(View.INVISIBLE);//不显示标题栏
@@ -148,7 +145,7 @@ public class ActPlayGameDetail extends BaseActivity implements Action1<Integer>
                 int topRow2 = (titleHeight - find_game_name_tv.getHeight()) / 2;
                 int topRow2 = (titleHeight - find_game_name_tv.getHeight()) / 2;
                 int leftRow = topRow2 / 4;//isNeedReservation ? topRow : 5 * topRow;
                 int leftRow = topRow2 / 4;//isNeedReservation ? topRow : 5 * topRow;
 
 
-                int willTop = Math.max(topRow/2, find_game_top + verticalOffset);
+                int willTop = Math.max(topRow / 2, find_game_top + verticalOffset);
                 int row = (find_icon_with * willTop + titleHeight * (find_game_top - willTop)) / find_game_top - topRow;
                 int row = (find_icon_with * willTop + titleHeight * (find_game_top - willTop)) / find_game_top - topRow;
                 RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) find_game_iv.getLayoutParams();
                 RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) find_game_iv.getLayoutParams();
                 layoutParams.leftMargin = Math.max(titleWidth, (G.WIDTH - find_icon_with) / 2 + verticalOffset);
                 layoutParams.leftMargin = Math.max(titleWidth, (G.WIDTH - find_icon_with) / 2 + verticalOffset);
@@ -180,7 +177,7 @@ public class ActPlayGameDetail extends BaseActivity implements Action1<Integer>
                 //星级位置变化
                 //星级位置变化
                 RelativeLayout.LayoutParams layoutParams5 = (RelativeLayout.LayoutParams) find_game_xin.getLayoutParams();
                 RelativeLayout.LayoutParams layoutParams5 = (RelativeLayout.LayoutParams) find_game_xin.getLayoutParams();
                 layoutParams5.topMargin = getResources().getDimensionPixelSize(R.dimen.find_game_top210) + verticalOffset;
                 layoutParams5.topMargin = getResources().getDimensionPixelSize(R.dimen.find_game_top210) + verticalOffset;
-                if (willTop == topRow/2) {
+                if (willTop == topRow / 2) {
                     if (mIsExpanded) {
                     if (mIsExpanded) {
 //                        txt_baseactivity_title.setVisibility(View.INVISIBLE);
 //                        txt_baseactivity_title.setVisibility(View.INVISIBLE);
                         find_game_bar.setVisibility(View.VISIBLE);
                         find_game_bar.setVisibility(View.VISIBLE);
@@ -209,7 +206,7 @@ public class ActPlayGameDetail extends BaseActivity implements Action1<Integer>
         ViewUtil.setText(find_game_name_tv);
         ViewUtil.setText(find_game_name_tv);
         ViewUtil.setText(find_game_info_tv);
         ViewUtil.setText(find_game_info_tv);
         ViewUtil.setText(find_game_down_tv);
         ViewUtil.setText(find_game_down_tv);
-        if(find_game_xin != null)
+        if (find_game_xin != null)
             find_game_xin.setRating(0.0f);
             find_game_xin.setRating(0.0f);
         //游戏介绍
         //游戏介绍
     }
     }
@@ -238,11 +235,11 @@ public class ActPlayGameDetail extends BaseActivity implements Action1<Integer>
     private void loadData(GameEntity gameEntity) {
     private void loadData(GameEntity gameEntity) {
         this.gameEntity = gameEntity;
         this.gameEntity = gameEntity;
         playGameEntity = gameEntity.getApp();
         playGameEntity = gameEntity.getApp();
-        if(gameEntity == null || playGameEntity == null){
+        if (gameEntity == null || playGameEntity == null) {
             return;
             return;
         }
         }
         //游戏简介与下载
         //游戏简介与下载
-        GlideImageLoader.setGameImage(find_game_iv, gameEntity.getApp().getIcon()+"");
+        GlideImageLoader.setGameImage(find_game_iv, gameEntity.getApp().getIcon() + "");
         ViewUtil.setText(find_game_name_tv, gameEntity.getApp().getName());
         ViewUtil.setText(find_game_name_tv, gameEntity.getApp().getName());
         isNeedReservation = !gameEntity.getApp().isCanDownload();//这里认为只有两种状态:可下载与预约下载
         isNeedReservation = !gameEntity.getApp().isCanDownload();//这里认为只有两种状态:可下载与预约下载
 //        if (isNeedReservation)
 //        if (isNeedReservation)
@@ -262,19 +259,19 @@ public class ActPlayGameDetail extends BaseActivity implements Action1<Integer>
         mAdapter.add(FgtPlayGameDetail.newInstance(gameEntity), "详情");
         mAdapter.add(FgtPlayGameDetail.newInstance(gameEntity), "详情");
         //ViewPager
         //ViewPager
         //welfare_gift_layout
         //welfare_gift_layout
-        if(gameEntity.isGiftAndBonus()){
+        if (gameEntity.isGiftAndBonus()) {
             welfare_gift_layout.setVisibility(View.GONE);
             welfare_gift_layout.setVisibility(View.GONE);
-        }else {
+        } else {
             welfare_gift_layout.setVisibility(View.VISIBLE);
             welfare_gift_layout.setVisibility(View.VISIBLE);
             mAdapter.add(FgtPlaGameGift.newInstance(gameEntity), "礼包");
             mAdapter.add(FgtPlaGameGift.newInstance(gameEntity), "礼包");
-            if(gameEntity.isGift()){
+            if (gameEntity.isGift()) {
                 gift_tv.setVisibility(View.VISIBLE);
                 gift_tv.setVisibility(View.VISIBLE);
-            }else {
+            } else {
                 gift_tv.setVisibility(View.GONE);
                 gift_tv.setVisibility(View.GONE);
             }
             }
-            if(TextUtils.isEmpty(gameEntity.getBonusText())){
+            if (TextUtils.isEmpty(gameEntity.getBonusText())) {
                 welfare_tv.setVisibility(View.GONE);
                 welfare_tv.setVisibility(View.GONE);
-            }else {
+            } else {
                 welfare_tv.setVisibility(View.VISIBLE);
                 welfare_tv.setVisibility(View.VISIBLE);
                 ViewUtil.setText(welfare_tv, String.format(Locale.CHINA, "+%s元", gameEntity.getBonusText()));
                 ViewUtil.setText(welfare_tv, String.format(Locale.CHINA, "+%s元", gameEntity.getBonusText()));
             }
             }
@@ -286,14 +283,14 @@ public class ActPlayGameDetail extends BaseActivity implements Action1<Integer>
         CommonUtil.getInstance().reflex(tabLayout, activity);
         CommonUtil.getInstance().reflex(tabLayout, activity);
 
 
         //tag 标签绘制
         //tag 标签绘制
-        CommonUtil.getInstance().paintLineaLayout(activity, gameEntity, ll_game_tag, 4,R.color.txt_bule, R.drawable.shape_blue_stroke_rectangle_no_lb);
+        CommonUtil.getInstance().paintLineaLayout(activity, gameEntity, ll_game_tag, 4, R.color.txt_bule, R.drawable.shape_blue_stroke_rectangle_no_lb);
 
 
     }
     }
 
 
     //更新按钮状态与添加点击事件
     //更新按钮状态与添加点击事件
     private void updateView(final Activity activity, PlayGameEntity playGameEntity, TextView textView) {
     private void updateView(final Activity activity, PlayGameEntity playGameEntity, TextView textView) {
 
 
-        CommonUtil.getInstance().palyGameDetailBtnValue(activity,gameEntity,textView, 0);
+        CommonUtil.getInstance().palyGameDetailBtnValue(activity, gameEntity, textView, 0);
     }
     }
 
 
 
 
@@ -306,7 +303,7 @@ public class ActPlayGameDetail extends BaseActivity implements Action1<Integer>
                     @Override
                     @Override
                     public void onNext(BaseMessage baseMessage) {
                     public void onNext(BaseMessage baseMessage) {
                         boolean isNewData = DataUtil.getInstance().isNewData(ApiKey.playGameDetail(id));
                         boolean isNewData = DataUtil.getInstance().isNewData(ApiKey.playGameDetail(id));
-                        if(isNewData) {
+                        if (isNewData) {
                             GameEntity gameEntity = baseMessage.getData(GameEntity.class);
                             GameEntity gameEntity = baseMessage.getData(GameEntity.class);
                             loadApp(gameEntity);
                             loadApp(gameEntity);
                         }
                         }
@@ -321,6 +318,7 @@ public class ActPlayGameDetail extends BaseActivity implements Action1<Integer>
                     }
                     }
                 });
                 });
     }
     }
+
     @Override
     @Override
     public void call(Integer integer) {
     public void call(Integer integer) {
 
 
@@ -333,94 +331,81 @@ public class ActPlayGameDetail extends BaseActivity implements Action1<Integer>
     }
     }
 
 
     //下载状态监听
     //下载状态监听
-
-    @Download.onPre
-    void onPre(DownloadTask task) {
-        if(TextUtils.isEmpty(gameEntity.downLinks())) {//游戏任务
+    void onPre(DownLoadInfo task) {
+        if (TextUtils.isEmpty(gameEntity.downLinks())) {//游戏任务
             return;
             return;
         }
         }
 
 
-        if (find_game_down_tv != null && gameEntity.downLinks().equals(task.getKey())) {
+        if (find_game_down_tv != null && gameEntity.downLinks().equals(task.getMDownloadUrl())) {
             find_game_down_tv.setText("准备下载中");
             find_game_down_tv.setText("准备下载中");
         }
         }
     }
     }
 
 
-    @Download.onTaskStart
-    void taskStart(DownloadTask task) {
-        if(TextUtils.isEmpty(gameEntity.downLinks())) {//游戏任务
+    void taskStart(DownLoadInfo task) {
+        if (TextUtils.isEmpty(gameEntity.downLinks())) {//游戏任务
             return;
             return;
         }
         }
-        if (find_game_down_tv != null && gameEntity.downLinks().equals(task.getKey())) {
+        if (find_game_down_tv != null && gameEntity.downLinks().equals(task.getMDownloadUrl())) {
             find_game_down_tv.setText("开始下载中");
             find_game_down_tv.setText("开始下载中");
         }
         }
     }
     }
 
 
-    @Download.onTaskResume
-    void taskResume(DownloadTask task) {
-        if(TextUtils.isEmpty(gameEntity.downLinks())) {//游戏任务
+    void taskResume(DownLoadInfo task) {
+        if (TextUtils.isEmpty(gameEntity.downLinks())) {//游戏任务
             return;
             return;
         }
         }
-        if (find_game_down_tv != null && gameEntity.downLinks().equals(task.getKey())) {
+        if (find_game_down_tv != null && gameEntity.downLinks().equals(task.getMDownloadUrl())) {
             find_game_down_tv.setText("恢复下载中");
             find_game_down_tv.setText("恢复下载中");
         }
         }
     }
     }
 
 
     //在这里处理任务执行中的状态,如进度进度条的刷新
     //在这里处理任务执行中的状态,如进度进度条的刷新
-    @Download.onTaskRunning
-    protected void running(DownloadTask task) {
-        if(gameEntity == null || TextUtils.isEmpty(gameEntity.downLinks())) {//游戏任务
+    protected void running(DownLoadInfo task) {
+        if (gameEntity == null || TextUtils.isEmpty(gameEntity.downLinks())) {//游戏任务
             return;
             return;
         }
         }
-        if (find_game_down_tv != null && gameEntity.downLinks().equals(task.getKey())) {
-            find_game_down_tv.setText(String.format(Locale.CHINA, "%d%%(%s)", Math.abs(task.getPercent()), task.getConvertSpeed()));//添加下载速度
+        if (find_game_down_tv != null && gameEntity.downLinks().equals(task.getMDownloadUrl())) {
+            find_game_down_tv.setText(String.format(Locale.CHINA, "%d%%(%s)", Math.abs(task.getMPercent()), task.getAverageSpeed()));//添加下载速度
         }
         }
     }
     }
 
 
-    @Download.onTaskStop
-    void taskStop(DownloadTask task) {
-        if(gameEntity == null || TextUtils.isEmpty(gameEntity.downLinks())) {//游戏任务
+    void taskStop(DownLoadInfo task) {
+        if (gameEntity == null || TextUtils.isEmpty(gameEntity.downLinks())) {//游戏任务
             return;
             return;
         }
         }
-        if (find_game_down_tv != null && gameEntity.downLinks().equals(task.getKey())) {
+        if (find_game_down_tv != null && gameEntity.downLinks().equals(task.getMDownloadUrl())) {
             find_game_down_tv.setText(CommonUtil.CONTINUE_DOWNLOAD);
             find_game_down_tv.setText(CommonUtil.CONTINUE_DOWNLOAD);
         }
         }
     }
     }
 
 
-    @Download.onNoSupportBreakPoint
-    void onNoSupportBreakPoint(DownloadTask task) {
-    }
-
-    @Download.onTaskCancel
-    void taskCancel(DownloadTask task) {
-        if(gameEntity == null || TextUtils.isEmpty(gameEntity.downLinks())) {//游戏任务
+    void taskCancel(DownLoadInfo task) {
+        if (gameEntity == null || TextUtils.isEmpty(gameEntity.downLinks())) {//游戏任务
             return;
             return;
         }
         }
-        if (find_game_down_tv != null && gameEntity.downLinks().equals(task.getKey())) {
+        if (find_game_down_tv != null && gameEntity.downLinks().equals(task.getMDownloadUrl())) {
             find_game_down_tv.setText("已经取消");
             find_game_down_tv.setText("已经取消");
         }
         }
     }
     }
 
 
-    @Download.onTaskFail
-    void taskFail(DownloadTask task) {
-        if(gameEntity == null || TextUtils.isEmpty(gameEntity.downLinks())) {//游戏任务
+    void taskFail(DownLoadInfo task) {
+        if (gameEntity == null || TextUtils.isEmpty(gameEntity.downLinks())) {//游戏任务
             return;
             return;
         }
         }
-        if (find_game_down_tv != null && gameEntity.downLinks().equals(task.getKey())) {
+        if (find_game_down_tv != null && gameEntity.downLinks().equals(task.getMDownloadUrl())) {
             find_game_down_tv.setText(CommonUtil.FAIL_DOWNLOAD);
             find_game_down_tv.setText(CommonUtil.FAIL_DOWNLOAD);
         }
         }
     }
     }
 
 
-    @Download.onTaskComplete
-    void taskComplete(DownloadTask task) {
-        if(gameEntity == null || TextUtils.isEmpty(gameEntity.downLinks())) {//游戏任务
+    void taskComplete(DownLoadInfo task) {
+        if (gameEntity == null || TextUtils.isEmpty(gameEntity.downLinks())) {//游戏任务
             return;
             return;
         }
         }
-        if (find_game_down_tv != null && gameEntity.downLinks().equals(task.getKey())) {
+        if (find_game_down_tv != null && gameEntity.downLinks().equals(task.getMDownloadUrl())) {
             find_game_down_tv.setText(CommonUtil.START_INSTALL);
             find_game_down_tv.setText(CommonUtil.START_INSTALL);
         }
         }
-        if (gameEntity != null && gameEntity.getApp() != null && TextUtils.equals(task.getKey(), gameEntity.getApp().getDownload_link()))
+        if (gameEntity != null && gameEntity.getApp() != null && TextUtils.equals(task.getMDownloadUrl(), gameEntity.getApp().getDownload_link()))
             gameEntity.getApp().updateState(DownloadUtil.STATUS_FINISH);
             gameEntity.getApp().updateState(DownloadUtil.STATUS_FINISH);
-        if (gameEntity != null && gameEntity.getRelease_task() != null && TextUtils.equals(task.getKey(), gameEntity.getApp().getDownload_link()))
+        if (gameEntity != null && gameEntity.getRelease_task() != null && TextUtils.equals(task.getMDownloadUrl(), gameEntity.getApp().getDownload_link()))
             gameEntity.getRelease_task().getDownloadHelper().updateState(DownloadUtil.STATUS_FINISH);
             gameEntity.getRelease_task().getDownloadHelper().updateState(DownloadUtil.STATUS_FINISH);
     }
     }
 
 
@@ -451,22 +436,22 @@ public class ActPlayGameDetail extends BaseActivity implements Action1<Integer>
             if (TextUtils.equals(packageName, playGameEntity.getPackage_names())) {
             if (TextUtils.equals(packageName, playGameEntity.getPackage_names())) {
                 switch (intent.getAction()) {
                 switch (intent.getAction()) {
                     case ACTION_PACKAGE_ADDED:
                     case ACTION_PACKAGE_ADDED:
-                        if(playGameEntity != null)
+                        if (playGameEntity != null)
                             playGameEntity.updateState(DownloadUtil.STATUS_INSTALLED);
                             playGameEntity.updateState(DownloadUtil.STATUS_INSTALLED);
-                        if(gameEntity.getRelease_task() != null)
+                        if (gameEntity.getRelease_task() != null)
                             gameEntity.getRelease_task().getDownloadHelper().updateState(DownloadUtil.STATUS_INSTALLED);
                             gameEntity.getRelease_task().getDownloadHelper().updateState(DownloadUtil.STATUS_INSTALLED);
                         break;
                         break;
                     case ACTION_PACKAGE_REMOVED:
                     case ACTION_PACKAGE_REMOVED:
                         String path = PackageUtil.isExistsFile(packageName, playGameEntity.getDownload_url());
                         String path = PackageUtil.isExistsFile(packageName, playGameEntity.getDownload_url());
                         if (TextUtils.isEmpty(path)) {
                         if (TextUtils.isEmpty(path)) {
-                            if(playGameEntity != null)
+                            if (playGameEntity != null)
                                 playGameEntity.updateState(DownloadUtil.STATUS_INIT);
                                 playGameEntity.updateState(DownloadUtil.STATUS_INIT);
-                            if(gameEntity.getRelease_task() != null)
+                            if (gameEntity.getRelease_task() != null)
                                 gameEntity.getRelease_task().getDownloadHelper().updateState(DownloadUtil.STATUS_INIT);
                                 gameEntity.getRelease_task().getDownloadHelper().updateState(DownloadUtil.STATUS_INIT);
                         } else {
                         } else {
-                            if(playGameEntity != null)
+                            if (playGameEntity != null)
                                 playGameEntity.updateState(DownloadUtil.STATUS_FINISH);
                                 playGameEntity.updateState(DownloadUtil.STATUS_FINISH);
-                            if(gameEntity.getRelease_task() != null)
+                            if (gameEntity.getRelease_task() != null)
                                 gameEntity.getRelease_task().getDownloadHelper().updateState(DownloadUtil.STATUS_FINISH);
                                 gameEntity.getRelease_task().getDownloadHelper().updateState(DownloadUtil.STATUS_FINISH);
                         }
                         }
                         break;
                         break;
@@ -477,10 +462,30 @@ public class ActPlayGameDetail extends BaseActivity implements Action1<Integer>
 
 
     @Subscribe
     @Subscribe
     public void onEventMainThread(BigEvent event) {
     public void onEventMainThread(BigEvent event) {
-        switch (event.getEventTypes()){
+        switch (event.getEventTypes()) {
             case REFRESH_XIAOMI_GAME_LIST:
             case REFRESH_XIAOMI_GAME_LIST:
                 initData();
                 initData();
                 break;
                 break;
         }
         }
+        if (event.getData() instanceof DownLoadInfo) {
+            DownLoadInfo task = (DownLoadInfo) event.getData();
+            switch (event.getEventTypes()) {
+                case DOWNLOAD_RUNNING:
+                    running(task);
+                    break;
+                case DOWNLOAD_STOP:
+                    taskStop(task);
+                    break;
+                case DOWNLOAD_COMPLETE:
+                    taskComplete(task);
+                    break;
+                case DOWNLOAD_CANCEL:
+                    taskCancel(task);
+                    break;
+                case DOWNLOAD_FAIL:
+                    taskFail(task);
+                    break;
+            }
+        }
     }
     }
 }
 }

+ 77 - 48
app/src/main/java/com/sheep/gamegroup/view/activity/ActReservation.java

@@ -9,16 +9,15 @@ import android.view.View;
 import android.widget.ImageView;
 import android.widget.ImageView;
 import android.widget.TextView;
 import android.widget.TextView;
 
 
-import com.arialyy.annotations.Download;
-import com.arialyy.aria.core.Aria;
-import com.arialyy.aria.core.download.DownloadTask;
-import com.sheep.gamegroup.util.DownloadUtil;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.absBase.BaseActivity;
+import com.sheep.gamegroup.event.BigEvent;
+import com.sheep.gamegroup.greendao.download.DownLoadInfo;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.FindApp;
 import com.sheep.gamegroup.model.entity.FindApp;
 import com.sheep.gamegroup.model.entity.FindAppReservation;
 import com.sheep.gamegroup.model.entity.FindAppReservation;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.DownloadUtil;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.SysAppUtil;
 import com.sheep.gamegroup.util.SysAppUtil;
@@ -74,7 +73,6 @@ public class ActReservation extends BaseActivity {
                 .setTitleFinish(this);
                 .setTitleFinish(this);
 
 
         EventBus.getDefault().register(this);
         EventBus.getDefault().register(this);
-        Aria.download(this).register();
 
 
         refresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
         refresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
             @Override
             @Override
@@ -106,16 +104,17 @@ public class ActReservation extends BaseActivity {
             public void convert(ViewHolder holder, FindAppReservation item) {
             public void convert(ViewHolder holder, FindAppReservation item) {
                 View find_reservation_item_center = holder.itemView.findViewById(R.id.find_reservation_item_center);
                 View find_reservation_item_center = holder.itemView.findViewById(R.id.find_reservation_item_center);
                 View find_reservation_item_bottom = holder.itemView.findViewById(R.id.find_reservation_item_bottom);
                 View find_reservation_item_bottom = holder.itemView.findViewById(R.id.find_reservation_item_bottom);
-                if(find_reservation_item_bottom != null) {
+                if (find_reservation_item_bottom != null) {
                     find_reservation_item_center.setVisibility(item == null ? View.GONE : View.VISIBLE);
                     find_reservation_item_center.setVisibility(item == null ? View.GONE : View.VISIBLE);
                     find_reservation_item_bottom.setVisibility(item == null ? View.VISIBLE : View.GONE);
                     find_reservation_item_bottom.setVisibility(item == null ? View.VISIBLE : View.GONE);
                 }
                 }
-                if(item != null)
+                if (item != null)
                     loadItem(holder.itemView, item);
                     loadItem(holder.itemView, item);
 
 
             }
             }
         });
         });
     }
     }
+
     private void loadItem(View itemView, final FindAppReservation item) {
     private void loadItem(View itemView, final FindAppReservation item) {
         ImageView find_information_game_icon = (ImageView) itemView.findViewById(R.id.find_information_game_icon);
         ImageView find_information_game_icon = (ImageView) itemView.findViewById(R.id.find_information_game_icon);
         TextView find_information_game_name = (TextView) itemView.findViewById(R.id.find_information_game_name);
         TextView find_information_game_name = (TextView) itemView.findViewById(R.id.find_information_game_name);
@@ -123,16 +122,16 @@ public class ActReservation extends BaseActivity {
         TextView find_information_game_bt1 = (TextView) itemView.findViewById(R.id.find_information_game_bt1);
         TextView find_information_game_bt1 = (TextView) itemView.findViewById(R.id.find_information_game_bt1);
         final TextView find_information_game_bt2 = (TextView) itemView.findViewById(R.id.find_information_game_bt2);
         final TextView find_information_game_bt2 = (TextView) itemView.findViewById(R.id.find_information_game_bt2);
 
 
-        if(item != null && item.getApplication() != null){
+        if (item != null && item.getApplication() != null) {
             final FindApp findApp = item.getApplication();
             final FindApp findApp = item.getApplication();
 
 
             ViewUtil.setImage(find_information_game_icon, findApp.getIcon());
             ViewUtil.setImage(find_information_game_icon, findApp.getIcon());
             ViewUtil.setText(find_information_game_name, findApp.getName());
             ViewUtil.setText(find_information_game_name, findApp.getName());
             ViewUtil.setText(find_information_game_time, String.format(Locale.CHINA, "开放时间:\n%s", TimeUtil.TimeStamp2Date(findApp.getDownload_at(), "yyyy-MM-dd\u0020HH:mm")));
             ViewUtil.setText(find_information_game_time, String.format(Locale.CHINA, "开放时间:\n%s", TimeUtil.TimeStamp2Date(findApp.getDownload_at(), "yyyy-MM-dd\u0020HH:mm")));
-            if(findApp.isCanDownload()){//可以下载
+            if (findApp.isCanDownload()) {//可以下载
                 downLoadTextViewMap.put(findApp.getDownload_link(), find_information_game_bt1);
                 downLoadTextViewMap.put(findApp.getDownload_link(), find_information_game_bt1);
                 downLoadTextViewMap.put(findApp.getPackage_name(), find_information_game_bt1);
                 downLoadTextViewMap.put(findApp.getPackage_name(), find_information_game_bt1);
-                findAppMap.put(findApp.getDownload_link(),findApp);
+                findAppMap.put(findApp.getDownload_link(), findApp);
                 findAppMap.put(findApp.getPackage_name(), findApp);
                 findAppMap.put(findApp.getPackage_name(), findApp);
                 findApp.getFindAppHelper().updateDownloadTaskView(this, findApp, find_information_game_bt1);
                 findApp.getFindAppHelper().updateDownloadTaskView(this, findApp, find_information_game_bt1);
                 find_information_game_bt2.setEnabled(false);
                 find_information_game_bt2.setEnabled(false);
@@ -146,7 +145,7 @@ public class ActReservation extends BaseActivity {
                     @Override
                     @Override
                     public void onClick(View view) {
                     public void onClick(View view) {
                         find_information_game_bt2.setEnabled(false);
                         find_information_game_bt2.setEnabled(false);
-                        if(item.isCancel()){//已经取消预约则进行预约
+                        if (item.isCancel()) {//已经取消预约则进行预约
                             recordAppDownloads(find_information_game_bt2, findApp.getId(), item);
                             recordAppDownloads(find_information_game_bt2, findApp.getId(), item);
                         } else {//取消预约
                         } else {//取消预约
                             deleteDownloads(find_information_game_bt2, item);
                             deleteDownloads(find_information_game_bt2, item);
@@ -190,6 +189,7 @@ public class ActReservation extends BaseActivity {
                     }
                     }
                 });
                 });
     }
     }
+
     //取消预约
     //取消预约
     private void deleteDownloads(final TextView find_information_game_bt2, final FindAppReservation item) {
     private void deleteDownloads(final TextView find_information_game_bt2, final FindAppReservation item) {
         SheepApp.getInstance().getNetComponent().getApiService().deleteDownloads(item.getId())
         SheepApp.getInstance().getNetComponent().getApiService().deleteDownloads(item.getId())
@@ -211,6 +211,7 @@ public class ActReservation extends BaseActivity {
                     }
                     }
                 });
                 });
     }
     }
+
     @Override
     @Override
     public void initListener() {
     public void initListener() {
 
 
@@ -242,7 +243,7 @@ public class ActReservation extends BaseActivity {
                         List<FindAppReservation> newList = baseMessage.getDataList(FindAppReservation.class);
                         List<FindAppReservation> newList = baseMessage.getDataList(FindAppReservation.class);
                         list.clear();
                         list.clear();
                         ListUtil.addAll(list, newList);
                         ListUtil.addAll(list, newList);
-                        if(!list.isEmpty())
+                        if (!list.isEmpty())
                             list.add(null);//底部圆角
                             list.add(null);//底部圆角
                         notifyDataSetChanged();
                         notifyDataSetChanged();
                     }
                     }
@@ -257,7 +258,7 @@ public class ActReservation extends BaseActivity {
 
 
 
 
     private void notifyDataSetChanged() {
     private void notifyDataSetChanged() {
-        if(empty_view == null){
+        if (empty_view == null) {
             return;
             return;
         }
         }
         CommonUtil.getInstance().updateEmptyView(empty_view, list.isEmpty());
         CommonUtil.getInstance().updateEmptyView(empty_view, list.isEmpty());
@@ -266,111 +267,138 @@ public class ActReservation extends BaseActivity {
     }
     }
 
 
     private Map<String, FindApp> findAppMap = new HashMap<>();
     private Map<String, FindApp> findAppMap = new HashMap<>();
+
     //获取任务对应的findApp
     //获取任务对应的findApp
     private FindApp getFindAppByKey(String key) {
     private FindApp getFindAppByKey(String key) {
-        if(findAppMap.containsKey(key))
+        if (findAppMap.containsKey(key))
             return findAppMap.get(key);
             return findAppMap.get(key);
         return null;
         return null;
     }
     }
+
     private Map<String, TextView> downLoadTextViewMap = new HashMap<>();
     private Map<String, TextView> downLoadTextViewMap = new HashMap<>();
+
     //获取任务对应的TextView来更新进度
     //获取任务对应的TextView来更新进度
-    private TextView getTextViewByTask(DownloadTask task) {
-        return getTextViewByKey(task.getKey());
+    private TextView getTextViewByTask(DownLoadInfo task) {
+        return getTextViewByKey(task.getMDownloadUrl());
     }
     }
+
     private TextView getTextViewByKey(String key) {
     private TextView getTextViewByKey(String key) {
-        if(downLoadTextViewMap.containsKey(key))
+        if (downLoadTextViewMap.containsKey(key))
             return downLoadTextViewMap.get(key);
             return downLoadTextViewMap.get(key);
         return null;
         return null;
     }
     }
-    //下载状态监听
 
 
-    @Download.onPre void onPre(DownloadTask task) {
+    //下载状态监听
+    void onPre(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
-        if(textView != null) {
+        if (textView != null) {
             textView.setText("准备下载中");
             textView.setText("准备下载中");
         }
         }
     }
     }
 
 
-    @Download.onTaskStart void taskStart(DownloadTask task) {
+    void taskStart(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
-        if(textView != null) {
+        if (textView != null) {
             textView.setText("开始下载中");
             textView.setText("开始下载中");
         }
         }
     }
     }
-    @Download.onTaskResume void taskResume(DownloadTask task) {
+
+    void taskResume(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
-        if(textView != null) {
+        if (textView != null) {
             textView.setText("恢复下载中");
             textView.setText("恢复下载中");
         }
         }
     }
     }
+
     //在这里处理任务执行中的状态,如进度进度条的刷新
     //在这里处理任务执行中的状态,如进度进度条的刷新
-    @Download.onTaskRunning protected void running(DownloadTask task) {
+    protected void running(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
-        if(textView != null) {
-            textView.setText(String.format(Locale.CHINA, "%d%%(%s)", Math.abs(task.getPercent()), task.getConvertSpeed()));//添加下载速度
+        if (textView != null) {
+            textView.setText(String.format(Locale.CHINA, "%d%%(%s)", Math.abs(task.getMPercent()), task.getAverageSpeed()));//添加下载速度
         }
         }
     }
     }
 
 
-    @Download.onTaskStop void taskStop(DownloadTask task) {
+    void taskStop(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
-        if(textView != null) {
+        if (textView != null) {
             textView.setText(CommonUtil.CONTINUE_DOWNLOAD);
             textView.setText(CommonUtil.CONTINUE_DOWNLOAD);
         }
         }
     }
     }
 
 
-    @Download.onNoSupportBreakPoint void onNoSupportBreakPoint(DownloadTask task) {
-    }
-
-    @Download.onTaskCancel void taskCancel(DownloadTask task) {
+    void taskCancel(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
-        if(textView != null) {
+        if (textView != null) {
             textView.setText("已经取消");
             textView.setText("已经取消");
         }
         }
     }
     }
 
 
-    @Download.onTaskFail void taskFail(DownloadTask task) {
+    void taskFail(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
-        if(textView != null) {
+        if (textView != null) {
             textView.setText(CommonUtil.FAIL_DOWNLOAD);
             textView.setText(CommonUtil.FAIL_DOWNLOAD);
         }
         }
     }
     }
 
 
-    @Download.onTaskComplete void taskComplete(DownloadTask task) {
+    void taskComplete(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
-        if(textView != null) {
+        if (textView != null) {
             textView.setText(CommonUtil.START_INSTALL);
             textView.setText(CommonUtil.START_INSTALL);
         }
         }
-        FindApp findApp = getFindAppByKey(task.getKey());
-        if(findApp != null) {
+        FindApp findApp = getFindAppByKey(task.getMDownloadUrl());
+        if (findApp != null) {
             findApp.updateState(DownloadUtil.STATUS_FINISH);
             findApp.updateState(DownloadUtil.STATUS_FINISH);
         }
         }
     }
     }
 
 
     @Subscribe
     @Subscribe
+    public void onEventMainThread(BigEvent event) {
+        if (event.getData() instanceof DownLoadInfo) {
+            DownLoadInfo task = (DownLoadInfo) event.getData();
+            switch (event.getEventTypes()) {
+                case DOWNLOAD_RUNNING:
+                    running(task);
+                    break;
+                case DOWNLOAD_STOP:
+                    taskStop(task);
+                    break;
+                case DOWNLOAD_COMPLETE:
+                    taskComplete(task);
+                    break;
+                case DOWNLOAD_CANCEL:
+                    taskCancel(task);
+                    break;
+                case DOWNLOAD_FAIL:
+                    taskFail(task);
+                    break;
+            }
+        }
+    }
+
+    @Subscribe
     public void onEventMainThread(Intent intent) {
     public void onEventMainThread(Intent intent) {
-        if(intent != null && intent.getAction() != null && intent.getDataString() != null && intent.getDataString().contains("package:")){
-            String packageName = intent.getDataString().replace("package:","");
+        if (intent != null && intent.getAction() != null && intent.getDataString() != null && intent.getDataString().contains("package:")) {
+            String packageName = intent.getDataString().replace("package:", "");
 
 
             FindApp findApp = getFindAppByKey(packageName);
             FindApp findApp = getFindAppByKey(packageName);
             TextView textView = getTextViewByKey(packageName);
             TextView textView = getTextViewByKey(packageName);
-            if(findApp != null) {
-                switch (intent.getAction()){
+            if (findApp != null) {
+                switch (intent.getAction()) {
                     case ACTION_PACKAGE_ADDED:
                     case ACTION_PACKAGE_ADDED:
-                        if(textView != null) {
+                        if (textView != null) {
                             textView.setText(CommonUtil.GAME_OPEN);
                             textView.setText(CommonUtil.GAME_OPEN);
                         }
                         }
                         findApp.updateState(DownloadUtil.STATUS_INSTALLED);
                         findApp.updateState(DownloadUtil.STATUS_INSTALLED);
                         break;
                         break;
                     case ACTION_PACKAGE_REMOVED:
                     case ACTION_PACKAGE_REMOVED:
                         String path = PackageUtil.isExistsFile(packageName, findApp.getDownload_url());
                         String path = PackageUtil.isExistsFile(packageName, findApp.getDownload_url());
-                        if(TextUtils.isEmpty(path)) {
+                        if (TextUtils.isEmpty(path)) {
                             findApp.updateState(DownloadUtil.STATUS_INIT);
                             findApp.updateState(DownloadUtil.STATUS_INIT);
-                            if(textView != null) {
+                            if (textView != null) {
                                 textView.setText(CommonUtil.START_DOWNLOAD);
                                 textView.setText(CommonUtil.START_DOWNLOAD);
                             }
                             }
                         } else {
                         } else {
                             findApp.updateState(DownloadUtil.STATUS_FINISH);
                             findApp.updateState(DownloadUtil.STATUS_FINISH);
-                            if(textView != null) {
+                            if (textView != null) {
                                 textView.setText(CommonUtil.START_INSTALL);
                                 textView.setText(CommonUtil.START_INSTALL);
                             }
                             }
                         }
                         }
@@ -379,6 +407,7 @@ public class ActReservation extends BaseActivity {
             }
             }
         }
         }
     }
     }
+
     @Override
     @Override
     protected void onDestroy() {
     protected void onDestroy() {
         super.onDestroy();
         super.onDestroy();

+ 0 - 1
app/src/main/java/com/sheep/gamegroup/view/activity/ActSheepApkList.java

@@ -12,7 +12,6 @@ import android.view.View;
 import android.widget.ImageView;
 import android.widget.ImageView;
 import android.widget.TextView;
 import android.widget.TextView;
 
 
-import com.arialyy.aria.util.CommonUtil;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.model.entity.ApkInfo;
 import com.sheep.gamegroup.model.entity.ApkInfo;
 import com.sheep.gamegroup.model.entity.AppInfo;
 import com.sheep.gamegroup.model.entity.AppInfo;

+ 74 - 116
app/src/main/java/com/sheep/gamegroup/view/activity/TaskDetailAct.java

@@ -13,12 +13,10 @@ import android.widget.TextView;
 
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 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.kfzs.duanduan.utils.ApkUtils;
 import com.kfzs.duanduan.utils.ApkUtils;
+import com.liulishuo.okdownload.DownloadTask;
+import com.liulishuo.okdownload.OkDownload;
+import com.liulishuo.okdownload.StatusUtil;
 import com.sheep.gamegroup.absBase.AbsChooseImageActivity;
 import com.sheep.gamegroup.absBase.AbsChooseImageActivity;
 import com.sheep.gamegroup.di.components.DaggerTaskDetailComponent;
 import com.sheep.gamegroup.di.components.DaggerTaskDetailComponent;
 import com.sheep.gamegroup.di.modules.TaskDetailModule;
 import com.sheep.gamegroup.di.modules.TaskDetailModule;
@@ -80,6 +78,7 @@ import com.tencent.smtt.sdk.WebViewClient;
 
 
 import org.afinal.simplecache.ApiKey;
 import org.afinal.simplecache.ApiKey;
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
 
 
 import java.io.File;
 import java.io.File;
 import java.util.ArrayList;
 import java.util.ArrayList;
@@ -242,8 +241,7 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
         TitleBarUtils.getInstance()
         TitleBarUtils.getInstance()
                 .setTitle(activity, "任务详情")
                 .setTitle(activity, "任务详情")
                 .setTitleFinish(activity);
                 .setTitleFinish(activity);
-        Aria.download(this).register();
-        mDownloadTaskService = new DownloadUtil(this);
+        downloadUtil = new DownloadUtil(this);
         adpTaskDetailChildListview = new AdpTaskDetailChildListview(taskChildList, activity);
         adpTaskDetailChildListview = new AdpTaskDetailChildListview(taskChildList, activity);
         detail_task_listview.setAdapter(adpTaskDetailChildListview);
         detail_task_listview.setAdapter(adpTaskDetailChildListview);
         adpTaskDetailChildListview.notifyDataSetChanged();
         adpTaskDetailChildListview.notifyDataSetChanged();
@@ -259,7 +257,7 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
 
 
     @Override
     @Override
     public void initListener() {
     public void initListener() {
-
+        EventBus.getDefault().register(this);
     }
     }
 
 
     @Override
     @Override
@@ -714,7 +712,7 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
      * 设置第一按钮的状态和文字显示
      * 设置第一按钮的状态和文字显示
      */
      */
     private void setFirstBtnState() {
     private void setFirstBtnState() {
-        setBtnStr(taskEty, mDownloadTaskService, new Action1<Object>() {
+        setBtnStr(taskEty, downloadUtil, new Action1<Object>() {
             @Override
             @Override
             public void call(Object o) {
             public void call(Object o) {
                 if (o instanceof Integer) {
                 if (o instanceof Integer) {
@@ -824,7 +822,7 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
     /**
     /**
      * 下载模块修改
      * 下载模块修改
      */
      */
-    private DownloadUtil mDownloadTaskService;
+    private DownloadUtil downloadUtil;
 
 
     @OnClick({R.id.detail_task_tv, R.id.web_text, R.id.ll_infos, R.id.btn_task_item, R.id.btn_up_imag, R.id.detail_share_friend_tv, R.id.task_detail_cancel})
     @OnClick({R.id.detail_task_tv, R.id.web_text, R.id.ll_infos, R.id.btn_task_item, R.id.btn_up_imag, R.id.detail_share_friend_tv, R.id.task_detail_cancel})
     public void onViewClicked(View view) {
     public void onViewClicked(View view) {
@@ -940,27 +938,40 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
                 }
                 }
                 break;
                 break;
             case DownloadUtil.STATUS_INIT://开始下载
             case DownloadUtil.STATUS_INIT://开始下载
-                DownloadTarget task;
-                if (TextUtils.isEmpty(taskReleaseEty.getTask().getDownload_link()) || !taskReleaseEty.getTask().getDownload_link().contains("http")) {
+                final DownloadTask task;
+                if (TextUtils.isEmpty(taskEty.getDownload_link()) || !taskEty.getDownload_link().contains("http")) {
                     G.showToast(R.string.error_download_link);
                     G.showToast(R.string.error_download_link);
                     return;
                     return;
                 }
                 }
-                task = Aria.download(this).load(taskReleaseEty.getTask().getDownload_link());
-                final DownLoadInfo downLoadInfo = mDownloadTaskService.getDownloadTaskByUrl(taskEty);
-                if (task.getTaskState() == IEntity.STATE_RUNNING) {
-                    task.stop();
-                } else if (task.getTaskState() == IEntity.STATE_FAIL) {
-                    task.cancel(true);
-                    task.removeRecord();
-                } else {
-                    //                            task.setFilePath(filePath);
-                    //                            task.start();
-                    mDownloadTaskService.start(downLoadInfo);
+                task = DownloadUtil.getTask(taskEty);
+                final StatusUtil.Status statusOnStore = StatusUtil.getStatus(task);
+                final DownLoadInfo downLoadInfo = downloadUtil.getDownloadTaskByUrl(taskEty);
+                switch (statusOnStore) {
+                    case RUNNING:
+                    case PENDING://等待的
+                        OkDownload.with().downloadDispatcher().cancel(task);
+                        break;
+                    case IDLE://空闲的
+                    case UNKNOWN:
+                        downloadUtil.start(downLoadInfo);
+                        break;
+                    case COMPLETED://有可能之前已经下载完成,但是数据库里已经没有数据了,这时只需要修改状态
+                        if (task.getFile() != null) {
+                            if(downloadUtil.checkFinish(downLoadInfo)) {//检查文件是否真的完成
+                                downloadUtil.setDownloadTaskFinish(task.getUrl(), task.getFile().getAbsolutePath());
+                            } else {//重新开始下载
+                                downloadUtil.delete(downLoadInfo);
+                                downloadUtil.start(downloadUtil.getDownloadTaskByUrl(taskEty));
+                                downloadUtil.setDownloadTaskStatus(taskEty.getDownload_link(), DownloadUtil.STATUS_INIT);
+                            }
+                        }
+                        updateBottom();
+                        break;
                 }
                 }
                 new Thread(new Runnable() {
                 new Thread(new Runnable() {
                     @Override
                     @Override
                     public void run() {
                     public void run() {
-                        if (mDownloadTaskService.addDownloadTask(downLoadInfo)) {
+                        if (downloadUtil.addDownloadTask(downLoadInfo)) {
                             //发送红点信息
                             //发送红点信息
                             EventBus.getDefault().post(BigEvent.get().setEventTypes(EventTypes.TIPS_DOWN_ICON));
                             EventBus.getDefault().post(BigEvent.get().setEventTypes(EventTypes.TIPS_DOWN_ICON));
                         }
                         }
@@ -1410,98 +1421,6 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
                 });
                 });
     }
     }
 
 
-    @Download.onPre
-    void onPre(DownloadTask task) {
-        if (taskEty == null) {
-            return;
-        }
-        if (task.getKey().equals(taskEty.getDownload_link())) {
-            if (taskEty == null) {
-                return;
-            }
-            btnTaskItem.setText("准备下载中");
-        }
-    }
-
-    @Download.onTaskStart
-    void taskStart(DownloadTask task) {
-        if (taskEty == null) {
-            return;
-        }
-        if (task.getKey().equals(taskEty.getDownload_link())) {
-            btnTaskItem.setText("开始下载中");
-        }
-    }
-
-    @Download.onTaskResume
-    void taskResume(DownloadTask task) {
-        if (taskEty == null) {
-            return;
-        }
-        if (task.getKey().equals(taskEty.getDownload_link())) {
-            btnTaskItem.setText("恢复下载中");
-        }
-    }
-
-    //在这里处理任务执行中的状态,如进度进度条的刷新
-    @Download.onTaskRunning
-    protected void running(DownloadTask task) {
-        if (taskEty == null) {
-            return;
-        }
-        try {
-            if (task.getKey().equals(taskEty.getDownload_link())) {
-                int p = task.getPercent();    //任务进度百分比
-                String speed = task.getConvertSpeed();    //转换单位后的下载速度,单位转换需要在配置文件中打开
-                btnTaskItem.setText(String.format(Locale.CHINA, "%d%%(%s)", Math.abs(p), speed));//添加下载速度
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    @Download.onTaskStop
-    void taskStop(DownloadTask task) {
-        if (taskEty == null) {
-            return;
-        }
-        if (task.getKey().equals(taskEty.getDownload_link())) {
-            btnTaskItem.setText(CommonUtil.CONTINUE_DOWNLOAD);
-        }
-    }
-
-    @Download.onTaskCancel
-    void taskCancel(DownloadTask task) {
-        if (taskEty == null) {
-            return;
-        }
-        if (task.getKey().equals(taskEty.getDownload_link())) {
-            btnTaskItem.setText("已经取消");
-        }
-    }
-
-    @Download.onTaskFail
-    void taskFail(DownloadTask task) {
-        if (taskEty == null) {
-            return;
-        }
-        if (task.getKey().equals(taskEty.getDownload_link())) {
-            btnTaskItem.setText(CommonUtil.FAIL_DOWNLOAD);
-        }
-    }
-
-    @Download.onTaskComplete
-    void taskComplete(DownloadTask task) {
-        if (taskEty == null) {
-            return;
-        }
-        if (task.getKey().equals(taskEty.getDownload_link())) {
-            //在这里处理任务完成的状态
-            btnTaskItem.setText(CommonUtil.START_INSTALL);
-            updateBottom();
-        }
-    }
-
 
 
     public void freshData() {
     public void freshData() {
         if (releaseTaskId != -1 && isFresh) {
         if (releaseTaskId != -1 && isFresh) {
@@ -1706,6 +1625,45 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
     @Override
     @Override
     protected void onDestroy() {
     protected void onDestroy() {
         super.onDestroy();
         super.onDestroy();
+        EventBus.getDefault().unregister(this);
         CommonUtil.getInstance().cancelAllTimers(CommonUtil.getInstance().timerHashMap);
         CommonUtil.getInstance().cancelAllTimers(CommonUtil.getInstance().timerHashMap);
     }
     }
+
+
+    /**
+     * 主要的事件广播接收更新处理
+     *
+     * @param event
+     */
+    @Subscribe
+    public void onEventMainThread(BigEvent event) {
+        if (btnTaskItem != null && event.getData() instanceof DownLoadInfo) {
+            DownLoadInfo task = (DownLoadInfo) event.getData();
+            if (taskEty != null && TextUtils.equals(task.getMDownloadUrl(), taskEty.getDownload_link())) {
+                switch (event.getEventTypes()) {
+                    case DOWNLOAD_RUNNING:
+                        try {
+                            btnTaskItem.setText(String.format(Locale.CHINA, "%d%%(%s)", Math.abs(task.getMPercent()), task.getAverageSpeed()));//添加下载速度
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+                        break;
+                    case DOWNLOAD_STOP:
+                        btnTaskItem.setText(CommonUtil.CONTINUE_DOWNLOAD);
+                        break;
+                    case DOWNLOAD_COMPLETE:
+                        //在这里处理任务完成的状态
+                        btnTaskItem.setText(CommonUtil.START_INSTALL);
+                        updateBottom();
+                        break;
+                    case DOWNLOAD_CANCEL:
+                        btnTaskItem.setText("已经取消");
+                        break;
+                    case DOWNLOAD_FAIL:
+                        btnTaskItem.setText(CommonUtil.FAIL_DOWNLOAD);
+                        break;
+                }
+            }
+        }
+    }
 }
 }

+ 91 - 55
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtFindChild.java

@@ -11,12 +11,11 @@ import android.view.View;
 import android.widget.ImageView;
 import android.widget.ImageView;
 import android.widget.TextView;
 import android.widget.TextView;
 
 
-import com.arialyy.annotations.Download;
-import com.arialyy.aria.core.Aria;
-import com.arialyy.aria.core.download.DownloadTask;
 import com.kfzs.android.view.tag.FlowLayout;
 import com.kfzs.android.view.tag.FlowLayout;
 import com.kfzs.android.view.tag.TagAdapter;
 import com.kfzs.android.view.tag.TagAdapter;
 import com.kfzs.android.view.tag.TagFlowLayout;
 import com.kfzs.android.view.tag.TagFlowLayout;
+import com.sheep.gamegroup.event.BigEvent;
+import com.sheep.gamegroup.greendao.download.DownLoadInfo;
 import com.sheep.gamegroup.model.api.ApiService;
 import com.sheep.gamegroup.model.api.ApiService;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.FindApp;
 import com.sheep.gamegroup.model.entity.FindApp;
@@ -53,12 +52,13 @@ import static android.content.Intent.ACTION_PACKAGE_REMOVED;
 public class FgtFindChild extends BaseListFragment2<FindItem> {
 public class FgtFindChild extends BaseListFragment2<FindItem> {
     @Override
     @Override
     protected RecyclerView.Adapter getAdapter() {
     protected RecyclerView.Adapter getAdapter() {
-        return new AdbCommonRecycler<FindItem>(SheepApp.getInstance(), list){
+        return new AdbCommonRecycler<FindItem>(SheepApp.getInstance(), list) {
 
 
             @Override
             @Override
             public int getItemViewType(int position) {
             public int getItemViewType(int position) {
                 return position;
                 return position;
             }
             }
+
             @Override
             @Override
             public int getViewIdByType(int type) {//type来源于 getItemViewType 返回的值
             public int getViewIdByType(int type) {//type来源于 getItemViewType 返回的值
                 return R.layout.find_item;
                 return R.layout.find_item;
@@ -66,24 +66,24 @@ public class FgtFindChild extends BaseListFragment2<FindItem> {
 
 
             @Override
             @Override
             public void convert(final ViewHolder holder, final FindItem item) {
             public void convert(final ViewHolder holder, final FindItem item) {
-                if(item == null){
+                if (item == null) {
                     return;
                     return;
                 }
                 }
                 View rootConvertView = holder.itemView;
                 View rootConvertView = holder.itemView;
                 View padding = rootConvertView.findViewById(R.id.padding);
                 View padding = rootConvertView.findViewById(R.id.padding);
-                if(padding == null){
+                if (padding == null) {
                     return;
                     return;
                 }
                 }
                 padding.setVisibility(holder.getAdapterPosition() == 1 ? View.GONE : View.VISIBLE);
                 padding.setVisibility(holder.getAdapterPosition() == 1 ? View.GONE : View.VISIBLE);
-                TextView find_item_name = (TextView)rootConvertView.findViewById(R.id.find_item_name);
-                TextView find_item_time = (TextView)rootConvertView.findViewById(R.id.find_item_time);
-                ImageView find_item_iv = (ImageView)rootConvertView.findViewById(R.id.find_item_iv);
-                TextView find_item_des = (TextView)rootConvertView.findViewById(R.id.find_item_des);
+                TextView find_item_name = (TextView) rootConvertView.findViewById(R.id.find_item_name);
+                TextView find_item_time = (TextView) rootConvertView.findViewById(R.id.find_item_time);
+                ImageView find_item_iv = (ImageView) rootConvertView.findViewById(R.id.find_item_iv);
+                TextView find_item_des = (TextView) rootConvertView.findViewById(R.id.find_item_des);
 //                TextView find_item_pf_label = (TextView)rootConvertView.findViewById(R.id.find_item_pf_label);
 //                TextView find_item_pf_label = (TextView)rootConvertView.findViewById(R.id.find_item_pf_label);
-                TextView find_item_download = (TextView)rootConvertView.findViewById(R.id.find_item_download);
-                TagFlowLayout find_item_tags = (TagFlowLayout)rootConvertView.findViewById(R.id.find_item_tags);
+                TextView find_item_download = (TextView) rootConvertView.findViewById(R.id.find_item_download);
+                TagFlowLayout find_item_tags = (TagFlowLayout) rootConvertView.findViewById(R.id.find_item_tags);
 
 
-                if(item.isGame()){
+                if (item.isGame()) {
                     find_item_download.setVisibility(View.VISIBLE);
                     find_item_download.setVisibility(View.VISIBLE);
                     FindApp findApp = item.getApplication();
                     FindApp findApp = item.getApplication();
 //                    find_item_pf_label.setVisibility(View.VISIBLE);
 //                    find_item_pf_label.setVisibility(View.VISIBLE);
@@ -98,7 +98,7 @@ public class FgtFindChild extends BaseListFragment2<FindItem> {
                 ViewUtil.setImage(find_item_iv, item.getPictures());
                 ViewUtil.setImage(find_item_iv, item.getPictures());
                 ViewUtil.setText(find_item_des, item.getDes());
                 ViewUtil.setText(find_item_des, item.getDes());
                 item.removeNullTag();
                 item.removeNullTag();
-                if(ListUtil.isEmpty(item.getTages())){
+                if (ListUtil.isEmpty(item.getTages())) {
                     find_item_tags.setVisibility(View.GONE);
                     find_item_tags.setVisibility(View.GONE);
                 } else {
                 } else {
                     find_item_tags.setVisibility(View.VISIBLE);
                     find_item_tags.setVisibility(View.VISIBLE);
@@ -147,158 +147,194 @@ public class FgtFindChild extends BaseListFragment2<FindItem> {
     }
     }
 
 
     private int type;
     private int type;
-    public static FgtFindChild newInstance(int type){
+
+    public static FgtFindChild newInstance(int type) {
         FgtFindChild fgt = new FgtFindChild();
         FgtFindChild fgt = new FgtFindChild();
         Bundle bundle = new Bundle();
         Bundle bundle = new Bundle();
         bundle.putInt("type", type);
         bundle.putInt("type", type);
         fgt.setArguments(bundle);
         fgt.setArguments(bundle);
         return fgt;
         return fgt;
     }
     }
+
     /**
     /**
      * 点击一个发现元素
      * 点击一个发现元素
+     *
      * @param item
      * @param item
      */
      */
     private void onClickItem(FindItem item) {
     private void onClickItem(FindItem item) {
-        if(item != null){
+        if (item != null) {
             Jump2View.getInstance().goFindItem(activity, item);
             Jump2View.getInstance().goFindItem(activity, item);
         }
         }
     }
     }
 
 
 
 
     private Map<String, FindApp> findAppMap = new HashMap<>();
     private Map<String, FindApp> findAppMap = new HashMap<>();
+
     //获取任务对应的findApp
     //获取任务对应的findApp
     private FindApp getFindAppByKey(String key) {
     private FindApp getFindAppByKey(String key) {
-        if(findAppMap.containsKey(key))
+        if (findAppMap.containsKey(key))
             return findAppMap.get(key);
             return findAppMap.get(key);
         return null;
         return null;
     }
     }
+
     private Map<String, TextView> downLoadTextViewMap = new HashMap<>();
     private Map<String, TextView> downLoadTextViewMap = new HashMap<>();
+
     //获取任务对应的TextView来更新进度
     //获取任务对应的TextView来更新进度
-    private TextView getTextViewByTask(DownloadTask task) {
-        return getTextViewByKey(task.getKey());
+    private TextView getTextViewByTask(DownLoadInfo task) {
+        return getTextViewByKey(task.getMDownloadUrl());
     }
     }
+
     private TextView getTextViewByKey(String key) {
     private TextView getTextViewByKey(String key) {
-        if(downLoadTextViewMap.containsKey(key))
+        if (downLoadTextViewMap.containsKey(key))
             return downLoadTextViewMap.get(key);
             return downLoadTextViewMap.get(key);
         return null;
         return null;
     }
     }
 
 
     //更新按钮状态与添加点击事件
     //更新按钮状态与添加点击事件
     private void updateView(Activity activity, FindApp findApp, TextView textView) {
     private void updateView(Activity activity, FindApp findApp, TextView textView) {
-        if(findApp.isCanDownload()){//可下载
+        if (findApp.isCanDownload()) {//可下载
             downLoadTextViewMap.put(findApp.getDownload_link(), textView);
             downLoadTextViewMap.put(findApp.getDownload_link(), textView);
             downLoadTextViewMap.put(findApp.getPackage_name(), textView);
             downLoadTextViewMap.put(findApp.getPackage_name(), textView);
-            findAppMap.put(findApp.getDownload_link(),findApp);
+            findAppMap.put(findApp.getDownload_link(), findApp);
             findAppMap.put(findApp.getPackage_name(), findApp);
             findAppMap.put(findApp.getPackage_name(), findApp);
             findApp.getFindAppHelper().updateDownloadTaskView(activity, findApp, textView);
             findApp.getFindAppHelper().updateDownloadTaskView(activity, findApp, textView);
         } else {//预约下载
         } else {//预约下载
             findApp.getFindAppHelper().updateReservationView(activity, findApp, textView);
             findApp.getFindAppHelper().updateReservationView(activity, findApp, textView);
         }
         }
     }
     }
-    //下载状态监听
 
 
-    @Download.onPre void onPre(DownloadTask task) {
+    //下载状态监听
+    void onPre(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
-        if(textView != null) {
+        if (textView != null) {
             textView.setText("准备下载中");
             textView.setText("准备下载中");
         }
         }
     }
     }
 
 
-    @Download.onTaskStart void taskStart(DownloadTask task) {
+    void taskStart(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
-        if(textView != null) {
+        if (textView != null) {
             textView.setText("开始下载中");
             textView.setText("开始下载中");
         }
         }
     }
     }
-    @Download.onTaskResume void taskResume(DownloadTask task) {
+
+    void taskResume(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
-        if(textView != null) {
+        if (textView != null) {
             textView.setText("恢复下载中");
             textView.setText("恢复下载中");
         }
         }
     }
     }
+
     //在这里处理任务执行中的状态,如进度进度条的刷新
     //在这里处理任务执行中的状态,如进度进度条的刷新
-    @Download.onTaskRunning protected void running(DownloadTask task) {
+    protected void running(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
-        if(textView != null) {
-            textView.setText(String.format(Locale.CHINA, "%d%%(%s)", Math.abs(task.getPercent()), task.getConvertSpeed()));//添加下载速度
+        if (textView != null) {
+            textView.setText(String.format(Locale.CHINA, "%d%%", Math.abs(task.getMPercent())));
         }
         }
     }
     }
 
 
-    @Download.onTaskStop void taskStop(DownloadTask task) {
+    void taskStop(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
-        if(textView != null) {
+        if (textView != null) {
             textView.setText(CommonUtil.CONTINUE_DOWNLOAD);
             textView.setText(CommonUtil.CONTINUE_DOWNLOAD);
         }
         }
     }
     }
 
 
-    @Download.onNoSupportBreakPoint void onNoSupportBreakPoint(DownloadTask task) {
-    }
-
-    @Download.onTaskCancel void taskCancel(DownloadTask task) {
+    void taskCancel(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
-        if(textView != null) {
+        if (textView != null) {
             textView.setText("已经取消");
             textView.setText("已经取消");
         }
         }
     }
     }
 
 
-    @Download.onTaskFail void taskFail(DownloadTask task) {
+    void taskFail(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
-        if(textView != null) {
+        if (textView != null) {
             textView.setText(CommonUtil.FAIL_DOWNLOAD);
             textView.setText(CommonUtil.FAIL_DOWNLOAD);
         }
         }
     }
     }
 
 
-    @Download.onTaskComplete void taskComplete(DownloadTask task) {
+    void taskComplete(DownLoadInfo task) {
         TextView textView = getTextViewByTask(task);
         TextView textView = getTextViewByTask(task);
-        if(textView != null) {
+        if (textView != null) {
             textView.setText(CommonUtil.START_INSTALL);
             textView.setText(CommonUtil.START_INSTALL);
         }
         }
-        FindApp findApp = getFindAppByKey(task.getKey());
-        if(findApp != null) {
+        FindApp findApp = getFindAppByKey(task.getMDownloadUrl());
+        if (findApp != null) {
             findApp.updateState(DownloadUtil.STATUS_FINISH);
             findApp.updateState(DownloadUtil.STATUS_FINISH);
         }
         }
     }
     }
 
 
+    /**
+     * 主要的事件广播接收更新处理
+     *
+     * @param event
+     */
+    @Subscribe
+    public void onEventMainThread(BigEvent event) {
+        if (event.getData() instanceof DownLoadInfo) {
+            DownLoadInfo task = (DownLoadInfo) event.getData();
+            switch (event.getEventTypes()) {
+                case DOWNLOAD_RUNNING:
+                    running(task);
+                    break;
+                case DOWNLOAD_STOP:
+                    taskStop(task);
+                    break;
+                case DOWNLOAD_COMPLETE:
+                    taskComplete(task);
+                    break;
+                case DOWNLOAD_CANCEL:
+                    taskCancel(task);
+                    break;
+                case DOWNLOAD_FAIL:
+                    taskFail(task);
+                    break;
+            }
+        }
+    }
+
     @Override
     @Override
     public void onCreate(@Nullable Bundle savedInstanceState) {
     public void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         super.onCreate(savedInstanceState);
         Bundle bundle = getArguments();
         Bundle bundle = getArguments();
-        if(bundle != null){
+        if (bundle != null) {
             type = bundle.getInt("type", 0);
             type = bundle.getInt("type", 0);
         }
         }
-        Aria.download(this).register();
         EventBus.getDefault().register(this);
         EventBus.getDefault().register(this);
     }
     }
+
     @Override
     @Override
     public void onDestroy() {
     public void onDestroy() {
         super.onDestroy();
         super.onDestroy();
         EventBus.getDefault().unregister(this);
         EventBus.getDefault().unregister(this);
     }
     }
+
     @Subscribe
     @Subscribe
     public void onEventMainThread(Intent intent) {
     public void onEventMainThread(Intent intent) {
-        if(intent != null && intent.getAction() != null && intent.getDataString() != null && intent.getDataString().contains("package:")){
-            String packageName = intent.getDataString().replace("package:","");
+        if (intent != null && intent.getAction() != null && intent.getDataString() != null && intent.getDataString().contains("package:")) {
+            String packageName = intent.getDataString().replace("package:", "");
 
 
             FindApp findApp = getFindAppByKey(packageName);
             FindApp findApp = getFindAppByKey(packageName);
             TextView textView = getTextViewByKey(packageName);
             TextView textView = getTextViewByKey(packageName);
-            if(findApp != null) {
-                switch (intent.getAction()){
+            if (findApp != null) {
+                switch (intent.getAction()) {
                     case ACTION_PACKAGE_ADDED:
                     case ACTION_PACKAGE_ADDED:
-                        if(textView != null) {
+                        if (textView != null) {
                             textView.setText(CommonUtil.GAME_OPEN);
                             textView.setText(CommonUtil.GAME_OPEN);
                         }
                         }
                         findApp.updateState(DownloadUtil.STATUS_INSTALLED);
                         findApp.updateState(DownloadUtil.STATUS_INSTALLED);
                         break;
                         break;
                     case ACTION_PACKAGE_REMOVED:
                     case ACTION_PACKAGE_REMOVED:
                         String path = PackageUtil.isExistsFile(packageName, findApp.getDownload_url());
                         String path = PackageUtil.isExistsFile(packageName, findApp.getDownload_url());
-                        if(TextUtils.isEmpty(path)) {
+                        if (TextUtils.isEmpty(path)) {
                             findApp.updateState(DownloadUtil.STATUS_INIT);
                             findApp.updateState(DownloadUtil.STATUS_INIT);
-                            if(textView != null) {
+                            if (textView != null) {
                                 textView.setText(CommonUtil.START_DOWNLOAD);
                                 textView.setText(CommonUtil.START_DOWNLOAD);
                             }
                             }
                         } else {
                         } else {
                             findApp.updateState(DownloadUtil.STATUS_FINISH);
                             findApp.updateState(DownloadUtil.STATUS_FINISH);
-                            if(textView != null) {
+                            if (textView != null) {
                                 textView.setText(CommonUtil.START_INSTALL);
                                 textView.setText(CommonUtil.START_INSTALL);
                             }
                             }
                         }
                         }

+ 0 - 2
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtGameAgencyRecharge.java

@@ -12,7 +12,6 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.view.ViewGroup;
 
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONArray;
-import com.arialyy.aria.core.Aria;
 import com.sheep.gamegroup.event.BigEvent;
 import com.sheep.gamegroup.event.BigEvent;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.GameAgencyRechargePlatformEntity;
 import com.sheep.gamegroup.model.entity.GameAgencyRechargePlatformEntity;
@@ -60,7 +59,6 @@ public class FgtGameAgencyRecharge extends BaseFragment {
             task_type = bundle.getString("type", "1002" + ",1003" + ",1004");
             task_type = bundle.getString("type", "1002" + ",1003" + ",1004");
         }
         }
         EventBus.getDefault().register(this);
         EventBus.getDefault().register(this);
-        Aria.download(this).register();
     }
     }
 
 
     @Override
     @Override

+ 57 - 34
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtMyGame.java

@@ -9,10 +9,9 @@ import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.ImageView;
 import android.widget.TextView;
 import android.widget.TextView;
 
 
-import com.arialyy.annotations.Download;
-import com.arialyy.aria.core.download.DownloadTask;
 import com.jcodecraeer.xrecyclerview.XRecyclerView;
 import com.jcodecraeer.xrecyclerview.XRecyclerView;
-import com.kfzs.duanduan.utils.ApkUtils;
+import com.sheep.gamegroup.event.BigEvent;
+import com.sheep.gamegroup.greendao.download.DownLoadInfo;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.OrienteeringDetail;
 import com.sheep.gamegroup.model.entity.OrienteeringDetail;
 import com.sheep.gamegroup.model.entity.RecyleObj;
 import com.sheep.gamegroup.model.entity.RecyleObj;
@@ -59,13 +58,14 @@ public class FgtMyGame extends BaseFragment {
     private List<OrienteeringDetail> list = ListUtil.emptyList();
     private List<OrienteeringDetail> list = ListUtil.emptyList();
     private int type = 0;
     private int type = 0;
 
 
-    public static FgtMyGame newInstance(int type){
+    public static FgtMyGame newInstance(int type) {
         FgtMyGame fgtTryMakeMoney = new FgtMyGame();
         FgtMyGame fgtTryMakeMoney = new FgtMyGame();
         Bundle bundle = new Bundle();
         Bundle bundle = new Bundle();
         bundle.putInt("type", type);
         bundle.putInt("type", type);
         fgtTryMakeMoney.setArguments(bundle);
         fgtTryMakeMoney.setArguments(bundle);
         return fgtTryMakeMoney;
         return fgtTryMakeMoney;
     }
     }
+
     @Override
     @Override
     public int getLayoutId() {
     public int getLayoutId() {
         return R.layout.fgt_try_makemoney_layout;
         return R.layout.fgt_try_makemoney_layout;
@@ -76,6 +76,7 @@ public class FgtMyGame extends BaseFragment {
         activity = getActivity();
         activity = getActivity();
         initView();
         initView();
     }
     }
+
     @Subscribe
     @Subscribe
     public void initView() {
     public void initView() {
 
 
@@ -89,6 +90,7 @@ public class FgtMyGame extends BaseFragment {
         bottomLine = ViewUtil.setBottomLine(recyclerview);
         bottomLine = ViewUtil.setBottomLine(recyclerview);
 
 
     }
     }
+
     private View bottomLine;
     private View bottomLine;
 
 
     public void initListener() {
     public void initListener() {
@@ -101,10 +103,10 @@ public class FgtMyGame extends BaseFragment {
 
 
             @Override
             @Override
             public void onLoadMore() {
             public void onLoadMore() {
-                if(ListUtil.size(list) >= per_page*page){
+                if (ListUtil.size(list) >= per_page * page) {
                     page += 1;
                     page += 1;
                     refreshData();
                     refreshData();
-                }else {
+                } else {
                     recyclerview.setNoMore(true);
                     recyclerview.setNoMore(true);
                 }
                 }
             }
             }
@@ -113,12 +115,13 @@ public class FgtMyGame extends BaseFragment {
 
 
     private void initData() {
     private void initData() {
         List<OrienteeringDetail> newList = DataUtil.getInstance().getCacheList(ApiKey.my_games, OrienteeringDetail.class);
         List<OrienteeringDetail> newList = DataUtil.getInstance().getCacheList(ApiKey.my_games, OrienteeringDetail.class);
-        if(!ListUtil.isEmpty(newList)) {
+        if (!ListUtil.isEmpty(newList)) {
             ListUtil.addAll(list, newList);
             ListUtil.addAll(list, newList);
             notifyDataSetChanged();
             notifyDataSetChanged();
         }
         }
         refreshData();
         refreshData();
     }
     }
+
     private void refreshData() {
     private void refreshData() {
         SheepApp.getInstance().getNetComponent().getApiService().getMyGames(page, per_page)
         SheepApp.getInstance().getNetComponent().getApiService().getMyGames(page, per_page)
                 .subscribeOn(Schedulers.io())
                 .subscribeOn(Schedulers.io())
@@ -138,11 +141,12 @@ public class FgtMyGame extends BaseFragment {
                     }
                     }
                 });
                 });
     }
     }
+
     private void notifyBottomLine(boolean noMore) {
     private void notifyBottomLine(boolean noMore) {
-        if(bottomLine != null) {
+        if (bottomLine != null) {
             int count = list.size();
             int count = list.size();
             bottomLine.setVisibility(count == 0 ? View.INVISIBLE : View.VISIBLE);
             bottomLine.setVisibility(count == 0 ? View.INVISIBLE : View.VISIBLE);
-            if(noMore) {
+            if (noMore) {
                 final boolean isCanScrollToPosition = count > 10;//页数大于一页才显示点击回到顶部
                 final boolean isCanScrollToPosition = count > 10;//页数大于一页才显示点击回到顶部
                 TextView bottom_line_text = bottomLine.findViewById(R.id.bottom_line_text);
                 TextView bottom_line_text = bottomLine.findViewById(R.id.bottom_line_text);
                 bottom_line_text.setText(isCanScrollToPosition ? "我是有底线的,点击我回到顶部" : "我是有底线的");
                 bottom_line_text.setText(isCanScrollToPosition ? "我是有底线的,点击我回到顶部" : "我是有底线的");
@@ -156,16 +160,18 @@ public class FgtMyGame extends BaseFragment {
             }
             }
         }
         }
     }
     }
+
     private void checkAndInitView() {
     private void checkAndInitView() {
-        if(empty_view == null)
+        if (empty_view == null)
             empty_view = findViewById(R.id.empty_view);
             empty_view = findViewById(R.id.empty_view);
     }
     }
-    private void notifyDataSetChanged(){
+
+    private void notifyDataSetChanged() {
         checkAndInitView();
         checkAndInitView();
         boolean isEmpty = tryMakeMoneyAdp.isEmpty() && list.isEmpty();
         boolean isEmpty = tryMakeMoneyAdp.isEmpty() && list.isEmpty();
         CommonUtil.getInstance().updateEmptyView(empty_view, isEmpty);
         CommonUtil.getInstance().updateEmptyView(empty_view, isEmpty);
-        if(!isEmpty){
-            tryMakeMoneyAdp.add(RecyleObj.make(RecyleType.GAME_TASK, list),0);
+        if (!isEmpty) {
+            tryMakeMoneyAdp.add(RecyleObj.make(RecyleType.GAME_TASK, list), 0);
         }
         }
         tryMakeMoneyAdp.refreshAdapter();
         tryMakeMoneyAdp.refreshAdapter();
         recyclerview.refreshComplete();
         recyclerview.refreshComplete();
@@ -179,17 +185,18 @@ public class FgtMyGame extends BaseFragment {
         // TODO: inflate a fragment view
         // TODO: inflate a fragment view
         View rootView = super.onCreateView(inflater, container, savedInstanceState);
         View rootView = super.onCreateView(inflater, container, savedInstanceState);
         Bundle bundle = getArguments();
         Bundle bundle = getArguments();
-        if(bundle != null){
+        if (bundle != null) {
             type = bundle.getInt("type", 0);
             type = bundle.getInt("type", 0);
         }
         }
         return rootView;
         return rootView;
     }
     }
 
 
     private int onResumeCount = 0;
     private int onResumeCount = 0;
+
     @Override
     @Override
     public void onResume() {
     public void onResume() {
         super.onResume();
         super.onResume();
-        switch (onResumeCount){
+        switch (onResumeCount) {
             case 0:
             case 0:
                 initData();//第一次先加载缓存
                 initData();//第一次先加载缓存
                 break;
                 break;
@@ -201,12 +208,11 @@ public class FgtMyGame extends BaseFragment {
     }
     }
 
 
     //在这里处理任务执行中的状态,如进度进度条的刷新
     //在这里处理任务执行中的状态,如进度进度条的刷新
-    @Download.onTaskRunning protected void running(DownloadTask task) {
-//        downloadTaskService.setDownloadTaskPercent(p, task.getCurrentProgress()/1024d/1024d,task.getFileSize()/1024d/1024d,0,task.getKey());
+    protected void running(DownLoadInfo task) {
         try {
         try {
-            int p = task.getPercent();    //任务进度百分比
-            String speed = task.getConvertSpeed();    //转换单位后的下载速度,单位转换需要在配置文件中打开
-            String url = task.getKey();
+            int p = task.getMPercent();    //任务进度百分比
+            String speed = task.getAverageSpeed();    //转换单位后的下载速度,单位转换需要在配置文件中打开
+            String url = task.getMDownloadUrl();
             TextView tvProgress = recyclerview.findViewWithTag(TryMakeMoneyAdp.PUBLIC_TAG_PREFIX_TEXTVIEW_LIST + url);
             TextView tvProgress = recyclerview.findViewWithTag(TryMakeMoneyAdp.PUBLIC_TAG_PREFIX_TEXTVIEW_LIST + url);
             if (tvProgress == null) {
             if (tvProgress == null) {
                 return;
                 return;
@@ -218,16 +224,9 @@ public class FgtMyGame extends BaseFragment {
         }
         }
     }
     }
 
 
-    @Download.onTaskStop void taskStop(DownloadTask task) {
-    }
-
-    @Download.onNoSupportBreakPoint void onNoSupportBreakPoint(DownloadTask task) {
-    }
-
-    @Download.onTaskCancel void taskCancel(DownloadTask task) {
-//        downloadTaskService.deleteDownloadTaskByDownloadUrl(task.getKey());
+    void taskCancel(DownLoadInfo task) {
         try {
         try {
-            String url = task.getKey();
+            String url = task.getMDownloadUrl();
 
 
             TextView tvProgress = recyclerview.findViewWithTag(TryMakeMoneyAdp.PUBLIC_TAG_PREFIX_TEXTVIEW_LIST + url);
             TextView tvProgress = recyclerview.findViewWithTag(TryMakeMoneyAdp.PUBLIC_TAG_PREFIX_TEXTVIEW_LIST + url);
             if (tvProgress == null) {
             if (tvProgress == null) {
@@ -239,9 +238,9 @@ public class FgtMyGame extends BaseFragment {
         }
         }
     }
     }
 
 
-    @Download.onTaskFail void taskFail(DownloadTask task) {
+    void taskFail(DownLoadInfo task) {
         try {
         try {
-            String url = task.getKey();
+            String url = task.getMDownloadUrl();
 
 
             TextView tvProgress = recyclerview.findViewWithTag(TryMakeMoneyAdp.PUBLIC_TAG_PREFIX_TEXTVIEW_LIST + url);
             TextView tvProgress = recyclerview.findViewWithTag(TryMakeMoneyAdp.PUBLIC_TAG_PREFIX_TEXTVIEW_LIST + url);
             if (tvProgress == null) {
             if (tvProgress == null) {
@@ -253,9 +252,9 @@ public class FgtMyGame extends BaseFragment {
         }
         }
     }
     }
 
 
-    @Download.onTaskComplete void taskComplete(DownloadTask task) {
+    void taskComplete(DownLoadInfo task) {
         try {
         try {
-            String url = task.getKey();
+            String url = task.getMDownloadUrl();
             TextView tvProgress = recyclerview.findViewWithTag(TryMakeMoneyAdp.PUBLIC_TAG_PREFIX_TEXTVIEW_LIST + url);
             TextView tvProgress = recyclerview.findViewWithTag(TryMakeMoneyAdp.PUBLIC_TAG_PREFIX_TEXTVIEW_LIST + url);
             if (tvProgress == null) {
             if (tvProgress == null) {
                 return;
                 return;
@@ -264,6 +263,30 @@ public class FgtMyGame extends BaseFragment {
         } catch (Exception e) {
         } catch (Exception e) {
             e.printStackTrace();
             e.printStackTrace();
         }
         }
-        ApkUtils.installApk(activity, task.getDownloadPath());
     }
     }
+
+    @Subscribe
+    public void onEventMainThread(BigEvent event) {
+        if (event.getData() instanceof DownLoadInfo) {
+            DownLoadInfo task = (DownLoadInfo) event.getData();
+            switch (event.getEventTypes()) {
+                case DOWNLOAD_RUNNING:
+                    running(task);
+                    break;
+                case DOWNLOAD_STOP:
+//                    taskStop(task);
+                    break;
+                case DOWNLOAD_COMPLETE:
+                    taskComplete(task);
+                    break;
+                case DOWNLOAD_CANCEL:
+                    taskCancel(task);
+                    break;
+                case DOWNLOAD_FAIL:
+                    taskFail(task);
+                    break;
+            }
+        }
+    }
+
 }
 }

+ 14 - 6
app/src/main/java/com/sheep/jiuyan/samllsheep/SheepApp.java

@@ -9,12 +9,16 @@ import android.support.multidex.MultiDexApplication;
 import android.text.TextUtils;
 import android.text.TextUtils;
 import android.util.DisplayMetrics;
 import android.util.DisplayMetrics;
 
 
-import com.arialyy.aria.core.Aria;
 import com.baidu.location.BDAbstractLocationListener;
 import com.baidu.location.BDAbstractLocationListener;
 import com.baidu.location.BDLocation;
 import com.baidu.location.BDLocation;
 import com.baidu.location.LocationClient;
 import com.baidu.location.LocationClient;
 import com.baidu.location.LocationClientOption;
 import com.baidu.location.LocationClientOption;
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.Glide;
+import com.liulishuo.okdownload.DownloadMonitor;
+import com.liulishuo.okdownload.OkDownload;
+import com.liulishuo.okdownload.core.breakpoint.RemitStoreOnSQLite;
+import com.liulishuo.okdownload.core.dispatcher.DownloadDispatcher;
+import com.mdad.sdk.mdsdk.monitor.MonitorService;
 import com.sheep.gamegroup.di.components.DaggerNetComponent;
 import com.sheep.gamegroup.di.components.DaggerNetComponent;
 import com.sheep.gamegroup.di.components.NetComponent;
 import com.sheep.gamegroup.di.components.NetComponent;
 import com.sheep.gamegroup.di.modules.NetModule;
 import com.sheep.gamegroup.di.modules.NetModule;
@@ -31,7 +35,7 @@ import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.RefreshUtil;
 import com.sheep.gamegroup.util.RefreshUtil;
 import com.sheep.gamegroup.util.SysAppUtil;
 import com.sheep.gamegroup.util.SysAppUtil;
 import com.sheep.gamegroup.util.UMConfigUtils;
 import com.sheep.gamegroup.util.UMConfigUtils;
-import com.sheep.gamegroup.view.activity.ActMain;
+import com.sheep.gamegroup.view.activity.ActDownloadMgr;
 import com.sheep.gamegroup.view.activity.GameCertificationActivity;
 import com.sheep.gamegroup.view.activity.GameCertificationActivity;
 import com.sheep.gamegroup.view.activity.LoginAct;
 import com.sheep.gamegroup.view.activity.LoginAct;
 import com.sheep.jiuyan.samllsheep.service.AutoCheckService;
 import com.sheep.jiuyan.samllsheep.service.AutoCheckService;
@@ -49,7 +53,6 @@ import com.umeng.socialize.UMShareAPI;
 import org.xutils.x;
 import org.xutils.x;
 
 
 import cn.jpush.android.api.JPushInterface;
 import cn.jpush.android.api.JPushInterface;
-import rx.functions.Action1;
 
 
 /**
 /**
  * Created by kemllor on 2017/12/21.
  * Created by kemllor on 2017/12/21.
@@ -214,6 +217,12 @@ public class SheepApp extends MultiDexApplication {
         JPushInterface.init(this);
         JPushInterface.init(this);
 
 
         initBdLocationOpstion();
         initBdLocationOpstion();
+
+        //设置下载工具
+        DownloadDispatcher.setMaxParallelRunningCount(1000);//在这里,下载框架好像有个bug,如果设置为5,第一个下载会占4个,第二个下载就只有一个在下载,就会失败
+
+//        RemitStoreOnSQLite.setRemitToDBDelayMillis(3000);
+
     }
     }
 
 
     private void initBdLocationOpstion() {
     private void initBdLocationOpstion() {
@@ -359,7 +368,6 @@ public class SheepApp extends MultiDexApplication {
                     LogUtil.println("SheepApp onActivityStarted", activity.getClass().getSimpleName(), mActivityCount);
                     LogUtil.println("SheepApp onActivityStarted", activity.getClass().getSimpleName(), mActivityCount);
                     if(!UMConfigUtils.isNotNeedAct(activity))
                     if(!UMConfigUtils.isNotNeedAct(activity))
                         UMConfigUtils.Event.SHEEP_STARTED.onEvent();
                         UMConfigUtils.Event.SHEEP_STARTED.onEvent();
-                    startService(new Intent(activity, DownloadService.class));
                     Jump2View.getInstance().startListenerShotService(activity);
                     Jump2View.getInstance().startListenerShotService(activity);
                     Jump2View.getInstance().startShotScreenFloat(activity, false);
                     Jump2View.getInstance().startShotScreenFloat(activity, false);
                 }
                 }
@@ -397,7 +405,7 @@ public class SheepApp extends MultiDexApplication {
         @Override
         @Override
         public void onActivityDestroyed(Activity activity) {
         public void onActivityDestroyed(Activity activity) {
             if (!TextUtils.isEmpty(gamePackgeName) && isGameFlag() && (activity instanceof GameCertificationActivity || activity instanceof LoginAct)) {
             if (!TextUtils.isEmpty(gamePackgeName) && isGameFlag() && (activity instanceof GameCertificationActivity || activity instanceof LoginAct)) {
-                CertificationUtil.newInstance().doCertification(activity, gamePackgeName, "cancel");
+                CertificationUtil.newInstance().doCertification(activity, gamePackgeName, "delete");
             }
             }
             if (mActivityCount == 0) {
             if (mActivityCount == 0) {
                 LogUtil.println("SheepApp onActivityDestroyed", activity.getClass().getSimpleName(), mActivityCount);
                 LogUtil.println("SheepApp onActivityDestroyed", activity.getClass().getSimpleName(), mActivityCount);
@@ -422,7 +430,7 @@ public class SheepApp extends MultiDexApplication {
      */
      */
     public void quit() {
     public void quit() {
         try {
         try {
-            Aria.download(this).stopAllTask();
+            OkDownload.with().downloadDispatcher().cancelAll();
             ActivityManager.getInstance().finishAllActivity();
             ActivityManager.getInstance().finishAllActivity();
         } catch (Exception ignore) {
         } catch (Exception ignore) {
         }
         }

+ 90 - 96
app/src/main/java/com/sheep/jiuyan/samllsheep/service/DownloadService.java

@@ -8,41 +8,40 @@ import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.Intent;
 import android.net.Uri;
 import android.net.Uri;
 import android.os.IBinder;
 import android.os.IBinder;
+import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.annotation.Nullable;
 import android.support.v7.app.AlertDialog;
 import android.support.v7.app.AlertDialog;
 import android.text.TextUtils;
 import android.text.TextUtils;
 import android.view.View;
 import android.view.View;
 
 
-import com.arialyy.annotations.Download;
-import com.arialyy.aria.core.Aria;
-import com.arialyy.aria.core.download.DownloadTask;
 import com.kfzs.duanduan.utils.ApkUtils;
 import com.kfzs.duanduan.utils.ApkUtils;
 import com.kfzs.duanduan.view.DialogStorageLow;
 import com.kfzs.duanduan.view.DialogStorageLow;
+import com.liulishuo.okdownload.DownloadListener;
+import com.liulishuo.okdownload.DownloadTask;
+import com.liulishuo.okdownload.SpeedCalculator;
+import com.liulishuo.okdownload.core.breakpoint.BlockInfo;
+import com.liulishuo.okdownload.core.breakpoint.BreakpointInfo;
+import com.liulishuo.okdownload.core.cause.EndCause;
+import com.liulishuo.okdownload.core.listener.DownloadListener4WithSpeed;
+import com.liulishuo.okdownload.core.listener.assist.Listener4SpeedAssistExtend;
 import com.sheep.gamegroup.event.BigEvent;
 import com.sheep.gamegroup.event.BigEvent;
 import com.sheep.gamegroup.event.EventTypes;
 import com.sheep.gamegroup.event.EventTypes;
 import com.sheep.gamegroup.greendao.download.DownLoadInfo;
 import com.sheep.gamegroup.greendao.download.DownLoadInfo;
-import com.sheep.gamegroup.model.entity.DialogConfig;
 import com.sheep.gamegroup.model.entity.FindApp;
 import com.sheep.gamegroup.model.entity.FindApp;
 import com.sheep.gamegroup.model.entity.PlayGameEntity;
 import com.sheep.gamegroup.model.entity.PlayGameEntity;
 import com.sheep.gamegroup.model.entity.TaskEty;
 import com.sheep.gamegroup.model.entity.TaskEty;
 import com.sheep.gamegroup.util.ActivityManager;
 import com.sheep.gamegroup.util.ActivityManager;
-import com.sheep.gamegroup.util.DataUtil;
 import com.sheep.gamegroup.util.DownloadUtil;
 import com.sheep.gamegroup.util.DownloadUtil;
 import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.StringUtils;
 import com.sheep.gamegroup.util.StringUtils;
-import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.G;
 
 
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.EventBus;
 
 
 import java.io.File;
 import java.io.File;
+import java.util.List;
 import java.util.Locale;
 import java.util.Locale;
-import java.util.concurrent.TimeUnit;
-
-import rx.Observable;
-import rx.android.schedulers.AndroidSchedulers;
-import rx.functions.Action1;
-import rx.schedulers.Schedulers;
+import java.util.Map;
 
 
 import static com.sheep.jiuyan.samllsheep.utils.ClassFileHelper.DIR;
 import static com.sheep.jiuyan.samllsheep.utils.ClassFileHelper.DIR;
 
 
@@ -58,102 +57,97 @@ public class DownloadService extends Service {
     @Override
     @Override
     public void onCreate() {
     public void onCreate() {
         super.onCreate();
         super.onCreate();
-        Aria.download(this).register();
         downloadUtil = new DownloadUtil(this);
         downloadUtil = new DownloadUtil(this);
     }
     }
-    public static final String ON_PRE = "onPre";
-    public static final String RUNNING = "running";
-    public static final String HAS_SHOW = "hasShow";
-
-    @Download.onPre
-    void onPre(final DownloadTask task) {
-        LogUtil.println("DownloadService", "onPre", task.getKey(), task.getTaskName());
-
-        Observable.just(1).delay(10_000L, TimeUnit.MILLISECONDS)
-                .subscribeOn(Schedulers.io())
-                .observeOn(AndroidSchedulers.mainThread())
-                .subscribe(new Action1<Integer>() {
-                    @Override
-                    public void call(Integer integer) {
-                        String taskStatus = DataUtil.getAsString(String.format(Locale.CHINA, "hasShow[%s]", task.getKey()), ON_PRE);
-                        switch (taskStatus) {
-                            case ON_PRE:
-                                DownLoadInfo downloadInfo = downloadUtil.getDownloadTaskByUrl(task.getKey());
-                                String taskName = downloadInfo != null ? downloadInfo.getMGameName() : task.getTaskName();
-                                DataUtil.putAsString(String.format(Locale.CHINA, "hasShow[%s]", task.getKey()), HAS_SHOW);
-                                ViewUtil.showMsgDialog(ActivityManager.getInstance().currentActivity(), new DialogConfig().setTitle("提示")
-                                        .setMsg("任务【"+taskName+"】下载无响应,是否使用其它下载方式(在任务列表中长按也可选择其它下载方式)").setBtnLeftText("取消").setBtnRightText("确定")
-                                        .setBtnRightOnClickListener(new View.OnClickListener() {
-                                            @Override
-                                            public void onClick(View view) {
-                                                showDownloadType(task.getKey(), task.getTaskName());
-                                            }
-                                        }));
-                                break;
-                        }
-                    }
-                });
+    @Override
+    public int onStartCommand(Intent intent, int flags, int startId) {
+        if(intent != null){
+            String download_url = intent.getStringExtra("download_url");
+            String file_path = intent.getStringExtra("file_path");
+            if(download_url != null && file_path != null) {
+                DownloadTask task = DownloadUtil.getTask(download_url, file_path);
+                task.enqueue(downloadListener);
+            }
+        }
+        return super.onStartCommand(intent, flags, startId);
     }
     }
+    private DownloadListener downloadListener = new DownloadListener4WithSpeed() {
+        @Override
+        public void taskStart(@NonNull DownloadTask task) {
+            LogUtil.println("DownloadListener", "taskStart");
+        }
 
 
-    @Download.onTaskStart
-    void taskStart(DownloadTask task) {
-        LogUtil.println("DownloadService", "taskStart", task.getKey(), task.getTaskName());
-    }
+        @Override
+        public void connectStart(@NonNull DownloadTask task, int blockIndex, @NonNull Map<String, List<String>> requestHeaderFields) {
+            LogUtil.println("DownloadListener", "connectStart", "blockIndex", blockIndex);
+        }
 
 
-    @Download.onTaskResume
-    void taskResume(DownloadTask task) {
-        LogUtil.println("DownloadService", "taskResume", task.getKey(), task.getTaskName());
-    }
+        @Override
+        public void connectEnd(@NonNull DownloadTask task, int blockIndex, int responseCode, @NonNull Map<String, List<String>> responseHeaderFields) {
+            LogUtil.println("DownloadListener", "connectEnd", "blockIndex", blockIndex, "responseCode", responseCode);
+        }
 
 
-    //在这里处理任务执行中的状态,如进度进度条的刷新
-    @Download.onTaskRunning
-    protected void running(DownloadTask task) {
-        LogUtil.println("DownloadService", "running", task.getKey(), task.getTaskName(), task.getPercent());
-        DataUtil.putAsString(String.format(Locale.CHINA, "hasShow[%s]", task.getKey()), RUNNING);
-        downloadUtil.setDownloadTaskPercent(task.getPercent(), task.getCurrentProgress() / 1024d / 1024d, task.getFileSize() / 1024d / 1024d, 0, task.getKey());
-        EventBus.getDefault().post(new BigEvent().setEventTypes(EventTypes.GENERATION_ACCOUNT_REFRESH_ADAPTER).setData(task));
-    }
+        @Override
+        public void infoReady(@NonNull DownloadTask task, @NonNull BreakpointInfo info, boolean fromBreakpoint, @NonNull Listener4SpeedAssistExtend.Listener4SpeedModel model) {
+            long totalLength = info.getTotalLength();
+            LogUtil.println("DownloadListener", "infoReady", "fromBreakpoint", fromBreakpoint, "totalLength", totalLength);
+            DownLoadInfo downloadInfo = downloadUtil.setDownloadTaskTotal(task.getUrl(), totalLength);
+            EventBus.getDefault().post(new BigEvent().setEventTypes(EventTypes.DOWNLOAD_START).setData(downloadInfo));
+        }
 
 
-    @Download.onTaskStop
-    void taskStop(DownloadTask task) {
-        LogUtil.println("DownloadService", "taskStop", task.getKey(), task.getTaskName());
-        downloadUtil.setDownloadTaskStatus(task.getKey(), DownloadUtil.STATUS_PAUSE);
-        EventBus.getDefault().post(new BigEvent().setEventTypes(EventTypes.DOWNLOAD_STOP).setData(task));
-    }
+        @Override
+        public void progressBlock(@NonNull DownloadTask task, int blockIndex, long currentBlockOffset, @NonNull SpeedCalculator blockSpeed) {
+            LogUtil.println("DownloadListener", "progressBlock", "blockIndex", blockIndex, "currentBlockOffset", currentBlockOffset, "blockSpeed", blockSpeed.averageSpeed());
+        }
 
 
-    @Download.onNoSupportBreakPoint
-    void onNoSupportBreakPoint(DownloadTask task) {
-    }
+        @Override
+        public void progress(@NonNull DownloadTask task, long currentOffset, @NonNull SpeedCalculator taskSpeed) {
+            LogUtil.println("DownloadListener", "progress", "currentOffset", currentOffset, "taskSpeed", taskSpeed.averageSpeed());
+            DownLoadInfo downloadInfo = downloadUtil.setDownloadTaskPercent(currentOffset, taskSpeed.averageSpeed(), task.getId(), task.getUrl());
+            EventBus.getDefault().post(new BigEvent().setEventTypes(EventTypes.DOWNLOAD_RUNNING).setData(downloadInfo));
+        }
 
 
-    @Download.onTaskCancel
-    void taskCancel(DownloadTask task) {
-        LogUtil.println("DownloadService", "taskCancel", task.getKey(), task.getTaskName());
-        downloadUtil.deleteDownloadTaskByDownloadUrl(task.getKey());
-        EventBus.getDefault().post(new BigEvent().setEventTypes(EventTypes.DOWNLOAD_CANCEL).setData(task));
-    }
+        @Override
+        public void blockEnd(@NonNull DownloadTask task, int blockIndex, BlockInfo info, @NonNull SpeedCalculator blockSpeed) {
+            LogUtil.println("DownloadListener", "blockEnd", "blockIndex", blockIndex, "blockSpeed", blockSpeed.averageSpeed());
+        }
 
 
-    @Download.onTaskFail
-    void taskFail(DownloadTask task) {
-        LogUtil.println("DownloadService", "taskFail", task.getKey(), task.getTaskName());
-        downloadUtil.setDownloadTaskStatus(task.getKey(), DownloadUtil.STATUS_FAIL);
-        EventBus.getDefault().post(new BigEvent().setEventTypes(EventTypes.DOWNLOAD_FAIL).setData(task));
-        //空间不足,弹框提示
-        try {
-            if (0 <= task.getFileSize() && task.getFileSize() > G.getFreeSpaceB()) {
-                DialogStorageLow.showDialog(DownloadService.this);
+        @Override
+        public void taskEnd(@NonNull DownloadTask task, @NonNull EndCause cause, @Nullable Exception realCause, @NonNull SpeedCalculator taskSpeed) {
+            LogUtil.println("DownloadListener", "taskEnd",  "cause", cause.name(),  "realCause", realCause != null ? realCause.getMessage() : "null", "taskSpeed", taskSpeed.averageSpeed());
+            DownLoadInfo downLoadInfo;
+            switch (cause){
+                case COMPLETED://下载完成
+                    if(task.getFile() != null) {
+                        downLoadInfo = downloadUtil.setDownloadTaskFinish(task.getUrl(), task.getFile().getAbsolutePath());
+                        ApkUtils.installApk(getApplicationContext(), task.getFile().getAbsolutePath());
+                        EventBus.getDefault().post(new BigEvent().setEventTypes(EventTypes.DOWNLOAD_COMPLETE).setData(downLoadInfo));
+                    }
+                    break;
+                case FILE_BUSY:
+                case PRE_ALLOCATE_FAILED://预先分配失败
+                case ERROR://下载错误
+                    downLoadInfo = downloadUtil.setDownloadTaskStatus(task.getUrl(), DownloadUtil.STATUS_FAIL);
+                    EventBus.getDefault().post(new BigEvent().setEventTypes(EventTypes.DOWNLOAD_FAIL).setData(downLoadInfo));
+                    //空间不足,弹框提示
+                    try {
+                        if (0 <= task.getReadBufferSize() && task.getReadBufferSize() > G.getFreeSpaceB()) {
+                            DialogStorageLow.showDialog(DownloadService.this);
+                        }
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                    break;
+                case CANCELED://取消下载
+                    downLoadInfo = downloadUtil.setDownloadTaskStatus(task.getUrl(), DownloadUtil.STATUS_PAUSE);
+                    EventBus.getDefault().post(new BigEvent().setEventTypes(EventTypes.DOWNLOAD_STOP).setData(downLoadInfo));
+                    break;
+                case SAME_TASK_BUSY:
+                    break;
             }
             }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
 
 
-    @Download.onTaskComplete
-    void taskComplete(DownloadTask task) {
-        LogUtil.println("DownloadService", "taskComplete", task.getKey(), task.getTaskName());
-        downloadUtil.setDownloadTaskFinish(task.getKey(), task.getDownloadPath());
-        ApkUtils.installApk(getApplicationContext(), task.getDownloadPath());
-        EventBus.getDefault().post(new BigEvent().setEventTypes(EventTypes.DOWNLOAD_COMPLETE).setData(task));
-    }
+        }
+    };
 
 
     @Nullable
     @Nullable
     @Override
     @Override

+ 1 - 0
app/src/main/res/values/str_appstore_strings.xml

@@ -20,6 +20,7 @@
 
 
     <string name="toast_download_task_out_of_rang">请稍候,最多可同时下载%s款游戏哦</string>
     <string name="toast_download_task_out_of_rang">请稍候,最多可同时下载%s款游戏哦</string>
 
 
+    <string name="has_pause">已暂停</string>
     <string name="downloading">下载中</string>
     <string name="downloading">下载中</string>
     <string name="download_fail">下载失败</string>
     <string name="download_fail">下载失败</string>
     <string name="download_fail_please_retry">下载失败,请点击重试</string>
     <string name="download_fail_please_retry">下载失败,请点击重试</string>