From 5533742855eac3104c51d06653a3ce6b0f59c3d1 Mon Sep 17 00:00:00 2001 From: AriaLyy <511455842@qq.com> Date: Thu, 6 Jul 2017 17:48:11 +0800 Subject: [PATCH] .. --- .../core/download/DownloadGroupTarget.java | 36 ++++++-- .../downloader/DownloadGroupUtil.java | 2 +- .../core/download/downloader/Downloader.java | 2 +- .../arialyy/aria/core/inf/AbsGroupTarget.java | 11 ++- app/src/main/AndroidManifest.xml | 1 + .../java/com/arialyy/simple/MainActivity.java | 24 +++--- .../download/group/DownloadGroupActivity.java | 86 +++++++++++++++++++ .../simple/download/group/GroupModule.java | 47 ++++++++++ .../res/layout/activity_download_group.xml | 18 ++++ app/src/main/res/layout/activity_main.xml | 8 +- app/src/main/res/values/strings.xml | 14 +++ 11 files changed, 226 insertions(+), 23 deletions(-) create mode 100644 app/src/main/java/com/arialyy/simple/download/group/DownloadGroupActivity.java create mode 100644 app/src/main/java/com/arialyy/simple/download/group/GroupModule.java create mode 100644 app/src/main/res/layout/activity_download_group.xml diff --git a/Aria/src/main/java/com/arialyy/aria/core/download/DownloadGroupTarget.java b/Aria/src/main/java/com/arialyy/aria/core/download/DownloadGroupTarget.java index d9afa40e..f8577e60 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/download/DownloadGroupTarget.java +++ b/Aria/src/main/java/com/arialyy/aria/core/download/DownloadGroupTarget.java @@ -29,31 +29,57 @@ import java.util.List; public class DownloadGroupTarget extends AbsGroupTarget { private List mUrls; + private String mGroupName; DownloadGroupTarget(List urls, String targetName) { this.mTargetName = targetName; this.mUrls = urls; - mTaskEntity = - DbEntity.findData(DownloadGroupTaskEntity.class, "key=?", CommonUtil.getMd5Code(urls)); + mGroupName = CommonUtil.getMd5Code(urls); + mTaskEntity = DbEntity.findData(DownloadGroupTaskEntity.class, "key=?", mGroupName); if (mTaskEntity == null) { mTaskEntity = new DownloadGroupTaskEntity(); + mTaskEntity.key = mGroupName; mTaskEntity.entity = new DownloadGroupEntity(); } if (mTaskEntity.entity == null) { - mTaskEntity.entity = getDownloadGroupEntity(urls); + mTaskEntity.entity = getDownloadGroupEntity(); } mEntity = mTaskEntity.entity; } - private DownloadGroupEntity getDownloadGroupEntity(List urls) { + private DownloadGroupEntity getDownloadGroupEntity() { DownloadGroupEntity entity = - DbEntity.findData(DownloadGroupEntity.class, "urlHash=?", CommonUtil.getMd5Code(urls)); + DbEntity.findData(DownloadGroupEntity.class, "groupName=?", mGroupName); if (entity == null) { entity = new DownloadGroupEntity(); } return entity; } + /** + * 设置任务组的文件夹路径,在Aria中,任务组的所有子任务都会下载到以任务组组名的文件夹中。 + * 如:groupDirPath = "/mnt/sdcard/download/", groupName = "group_test" + *
+   *   {@code
+   *      + mnt
+   *        + sdcard
+   *          + download
+   *            + group_test
+   *              - task1.apk
+   *              - task2.apk
+   *              - task3.apk
+   *              ....
+   *
+   *   }
+   * 
+ * + * @param groupDirPath 任务组保存文件夹路径 + */ + public DownloadGroupTarget setDownloadPath(String groupDirPath) { + + return this; + } + /** * 设置保存路径组 */ diff --git a/Aria/src/main/java/com/arialyy/aria/core/download/downloader/DownloadGroupUtil.java b/Aria/src/main/java/com/arialyy/aria/core/download/downloader/DownloadGroupUtil.java index 7dbd2585..2232722c 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/download/downloader/DownloadGroupUtil.java +++ b/Aria/src/main/java/com/arialyy/aria/core/download/downloader/DownloadGroupUtil.java @@ -35,7 +35,7 @@ import java.util.concurrent.Executors; * 任务组下载工具 */ public class DownloadGroupUtil implements IDownloadUtil { - private static final String TAG = "DownloadGroupUtil"; + private final String TAG = "DownloadGroupUtil"; /** * 任务组所有任务总大小 */ diff --git a/Aria/src/main/java/com/arialyy/aria/core/download/downloader/Downloader.java b/Aria/src/main/java/com/arialyy/aria/core/download/downloader/Downloader.java index 6fb08517..7d1eae99 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/download/downloader/Downloader.java +++ b/Aria/src/main/java/com/arialyy/aria/core/download/downloader/Downloader.java @@ -134,7 +134,7 @@ class Downloader implements Runnable, IDownloadUtil { task.cancel(); } } - CommonUtil.delDownloadTaskConfig(mTaskEntity.removeFile, mEntity); + CommonUtil.delDownloadTaskConfig(mTaskEntity.removeFile, mTaskEntity); } @Override public void stopDownload() { diff --git a/Aria/src/main/java/com/arialyy/aria/core/inf/AbsGroupTarget.java b/Aria/src/main/java/com/arialyy/aria/core/inf/AbsGroupTarget.java index c514577b..19bad7c7 100644 --- a/Aria/src/main/java/com/arialyy/aria/core/inf/AbsGroupTarget.java +++ b/Aria/src/main/java/com/arialyy/aria/core/inf/AbsGroupTarget.java @@ -19,7 +19,16 @@ package com.arialyy.aria.core.inf; * Created by AriaL on 2017/6/29. * 任务组超类 */ -public abstract class AbsGroupTarget +public abstract class AbsGroupTarget extends AbsTarget { + /** + * 设置任务组的组名,如果不设置任务组,Aria会自动将任务组的所有子任务的key相加,取md5码作为任务组组名 + * + * @param groupName 任务组组名 + */ + public TARGET setGroupName(String groupName) { + mEntity.setGroupName(groupName); + return (TARGET) this; + } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b91acce7..4443482d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -31,6 +31,7 @@ + diff --git a/app/src/main/java/com/arialyy/simple/MainActivity.java b/app/src/main/java/com/arialyy/simple/MainActivity.java index 7b315dab..92a733e0 100644 --- a/app/src/main/java/com/arialyy/simple/MainActivity.java +++ b/app/src/main/java/com/arialyy/simple/MainActivity.java @@ -18,11 +18,8 @@ package com.arialyy.simple; import android.content.Intent; import android.os.Bundle; -import android.support.v7.widget.Toolbar; import android.view.View; -import butterknife.Bind; import butterknife.OnClick; -import com.arialyy.aria.core.Aria; import com.arialyy.simple.base.BaseActivity; import com.arialyy.simple.databinding.ActivityMainBinding; import com.arialyy.simple.download.DownloadActivity; @@ -45,15 +42,20 @@ public class MainActivity extends BaseActivity { return R.layout.activity_main; } - @OnClick(R.id.download) public void downloadDemo() { - startActivity(new Intent(this, DownloadActivity.class)); - } - @OnClick(R.id.upload) public void uploadDemo() { - startActivity(new Intent(this, UploadActivity.class)); - } + @OnClick({R.id.download, R.id.upload, R.id.download_task_group}) + public void funcation(View view){ + switch (view.getId()){ + case R.id.download: + startActivity(new Intent(this, DownloadActivity.class)); + break; + case R.id.upload: + startActivity(new Intent(this, UploadActivity.class)); + break; + case R.id.download_task_group: + + break; + } - @OnClick(R.id.multi_test) public void mutliTest() { - startActivity(new Intent(this, TestMutilTaskSysDownload.class)); } } diff --git a/app/src/main/java/com/arialyy/simple/download/group/DownloadGroupActivity.java b/app/src/main/java/com/arialyy/simple/download/group/DownloadGroupActivity.java new file mode 100644 index 00000000..b5968f45 --- /dev/null +++ b/app/src/main/java/com/arialyy/simple/download/group/DownloadGroupActivity.java @@ -0,0 +1,86 @@ +/* + * Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.arialyy.simple.download.group; + +import android.os.Bundle; +import android.os.Environment; +import android.view.View; +import android.widget.Button; +import android.widget.RadioGroup; +import android.widget.TextView; +import butterknife.Bind; +import com.arialyy.aria.core.Aria; +import com.arialyy.aria.core.download.DownloadTask; +import com.arialyy.aria.core.scheduler.AbsSchedulerListener; +import com.arialyy.simple.R; +import com.arialyy.simple.base.BaseActivity; +import com.arialyy.simple.databinding.ActivityDownloadGroupBinding; +import com.arialyy.simple.widget.HorizontalProgressBarWithNumber; +import java.util.List; + +/** + * Created by Aria.Lao on 2017/7/6. + */ +public class DownloadGroupActivity extends BaseActivity { + + @Bind(R.id.progressBar) HorizontalProgressBarWithNumber mPb; + @Bind(R.id.start) Button mStart; + @Bind(R.id.stop) Button mStop; + @Bind(R.id.cancel) Button mCancel; + @Bind(R.id.size) TextView mSize; + @Bind(R.id.speed) TextView mSpeed; + List mUrls; + + @Override protected void init(Bundle savedInstanceState) { + super.init(savedInstanceState); + setTitle("任务组"); + mUrls = getModule(GroupModule.class).getUrls(); + } + + @Override protected int setLayoutId() { + return R.layout.activity_download_group; + } + + @Override protected void onResume() { + super.onResume(); + //Aria.download(this).addSchedulerListener(new AbsSchedulerListener() { + // + //}); + } + + //public void onClick(View view) { + // switch (view.getId()) { + // case R.id.start: + // String text = ((TextView) view).getText().toString(); + // if (text.equals("重新开始?") || text.equals("开始")) { + // Aria.download(this) + // .load(mUrls) + // .setDownloadPaths() + // .setDownloadPath(Environment.getExternalStorageDirectory().getPath() + "/test.apk") + // .start(); + // } else if (text.equals("恢复")) { + // Aria.download(this).load(DOWNLOAD_URL).resume(); + // } + // break; + // case R.id.stop: + // Aria.download(this).load(DOWNLOAD_URL).pause(); + // break; + // case R.id.cancel: + // Aria.download(this).load(DOWNLOAD_URL).cancel(); + // break; + // } + //} +} diff --git a/app/src/main/java/com/arialyy/simple/download/group/GroupModule.java b/app/src/main/java/com/arialyy/simple/download/group/GroupModule.java new file mode 100644 index 00000000..7e15d112 --- /dev/null +++ b/app/src/main/java/com/arialyy/simple/download/group/GroupModule.java @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.arialyy.simple.download.group; + +import android.content.Context; +import com.arialyy.simple.R; +import com.arialyy.simple.base.BaseModule; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * Created by Aria.Lao on 2017/7/6. + */ +public class GroupModule extends BaseModule { + public GroupModule(Context context) { + super(context); + } + + List getUrls() { + List urls = new ArrayList<>(); + String[] str = getContext().getResources().getStringArray(R.array.download_url); + Collections.addAll(urls, str); + return urls; + } + + //List convertPath(List urls){ + // List paths = new ArrayList<>(); + // + // for (String url : urls){ + // + // } + //} +} diff --git a/app/src/main/res/layout/activity_download_group.xml b/app/src/main/res/layout/activity_download_group.xml new file mode 100644 index 00000000..f7877e92 --- /dev/null +++ b/app/src/main/res/layout/activity_download_group.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 84e60c71..17407578 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -13,7 +13,7 @@ android:id="@+id/download" android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="下载 demo" + android:text="下载" style="?buttonBarButtonStyle" /> @@ -21,15 +21,15 @@ android:id="@+id/upload" android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="上传 demo" + android:text="上传" style="?buttonBarButtonStyle" />