id功能修改

This commit is contained in:
laoyuyu
2019-07-21 11:06:08 +08:00
parent fdb607e10f
commit 27fb964fef
102 changed files with 3599 additions and 3211 deletions

View File

@@ -36,7 +36,6 @@
<activity android:name=".core.download.fragment_download.FragmentActivity"/>
<activity android:name=".core.download.multi_download.MultiDownloadActivity"/>
<activity android:name=".core.download.HighestPriorityActivity"/>
<activity android:name="com.arialyy.simple.core.test.TestMutilTaskSysDownload"/>
<activity android:name=".core.download.group.DownloadGroupActivity"/>
<activity android:name=".core.download.FtpDownloadActivity"/>
<activity android:name=".core.download.group.FTPDirDownloadActivity"/>

View File

@@ -21,7 +21,7 @@ import android.widget.Button
import android.widget.Toast
import com.arialyy.annotations.Download
import com.arialyy.aria.core.Aria
import com.arialyy.aria.core.download.DownloadTarget
import com.arialyy.aria.core.download.HttpNormalTarget
import com.arialyy.aria.core.download.DownloadTask
import com.arialyy.aria.core.inf.IEntity
import com.arialyy.simple.R
@@ -39,7 +39,7 @@ class KotlinDownloadActivity : BaseActivity<ActivitySingleBinding>() {
private lateinit var mStart: Button
private lateinit var mStop: Button
private lateinit var mCancel: Button
private lateinit var target: DownloadTarget
private lateinit var target: HttpNormalTarget
override fun setLayoutId(): Int {
return R.layout.activity_single

View File

@@ -28,18 +28,19 @@ import com.arialyy.aria.core.download.DownloadTask;
import com.arialyy.aria.util.CommonUtil;
import com.arialyy.frame.core.AbsDialog;
import com.arialyy.simple.R;
import com.arialyy.simple.util.AppUtil;
import com.arialyy.simple.widget.HorizontalProgressBarWithNumber;
/**
* Created by AriaL on 2017/1/2.
*/
public class DownloadDialog extends AbsDialog implements View.OnClickListener{
public class DownloadDialog extends AbsDialog implements View.OnClickListener {
private HorizontalProgressBarWithNumber mPb;
private Button mStart;
private Button mStop;
private Button mCancel;
private TextView mSize;
private TextView mSpeed;
private DownloadEntity mEntity;
private static final String DOWNLOAD_URL =
"http://static.gaoshouyou.com/d/4b/d7/e04b308d9cd7f0ad4cac18d1a514544c.apk";
@@ -57,22 +58,20 @@ public class DownloadDialog extends AbsDialog implements View.OnClickListener{
Aria.download(this).register();
mPb = findViewById(R.id.progressBar);
mStart = findViewById(R.id.start);
mStop = findViewById(R.id.stop);
mCancel = findViewById(R.id.cancel);
mSize = findViewById(R.id.size);
mSpeed = findViewById(R.id.speed);
DownloadEntity entity = Aria.download(this).getDownloadEntity(DOWNLOAD_URL);
if (entity != null) {
mSize.setText(CommonUtil.formatFileSize(entity.getFileSize()));
int p = (int) (entity.getCurrentProgress() * 100 / entity.getFileSize());
mEntity = Aria.download(this).getFirstDownloadEntity(DOWNLOAD_URL);
if (mEntity != null) {
mSize.setText(CommonUtil.formatFileSize(mEntity.getFileSize()));
int p = (int) (mEntity.getCurrentProgress() * 100 / mEntity.getFileSize());
mPb.setProgress(p);
int state = entity.getState();
int state = mEntity.getState();
setBtState(state != DownloadEntity.STATE_RUNNING);
} else {
setBtState(true);
}
mStart.setOnClickListener(this);
mStop.setOnClickListener(this);
mCancel.setOnClickListener(this);
}
@@ -80,16 +79,28 @@ public class DownloadDialog extends AbsDialog implements View.OnClickListener{
public void onClick(View view) {
switch (view.getId()) {
case R.id.start:
Aria.download(this)
.load(DOWNLOAD_URL)
.setFilePath(Environment.getExternalStorageDirectory().getPath() + "/飞机大战.apk")
.start();
break;
case R.id.stop:
Aria.download(this).load(DOWNLOAD_URL).stop();
if (!AppUtil.chekEntityValid(mEntity)) {
Aria.download(this)
.load(DOWNLOAD_URL)
.setFilePath(Environment.getExternalStorageDirectory().getPath() + "/飞机大战.apk")
.start();
mStart.setText(getContext().getString(R.string.stop));
break;
}
if (Aria.download(this).load(mEntity.getId()).isRunning()) {
Aria.download(this).load(mEntity.getId()).stop();
mStart.setText(getContext().getString(R.string.resume));
} else {
Aria.download(this).load(mEntity.getId()).resume();
mStart.setText(getContext().getString(R.string.stop));
}
break;
case R.id.cancel:
Aria.download(this).load(DOWNLOAD_URL).cancel();
if (AppUtil.chekEntityValid(mEntity)) {
Aria.download(this).load(mEntity.getId()).cancel();
mStart.setText(getContext().getString(R.string.start));
}
break;
}
}
@@ -124,6 +135,5 @@ public class DownloadDialog extends AbsDialog implements View.OnClickListener{
private void setBtState(boolean startEnable) {
mStart.setEnabled(startEnable);
mCancel.setEnabled(!startEnable);
mStop.setEnabled(!startEnable);
}
}

View File

@@ -9,17 +9,20 @@ import com.arialyy.annotations.Download;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.download.DownloadEntity;
import com.arialyy.aria.core.download.DownloadTask;
import com.arialyy.aria.core.inf.IEntity;
import com.arialyy.aria.util.CommonUtil;
import com.arialyy.frame.util.show.T;
import com.arialyy.simple.R;
import com.arialyy.simple.base.BaseDialog;
import com.arialyy.simple.databinding.DialogFragmentDownloadBinding;
import com.arialyy.simple.util.AppUtil;
/**
* Created by lyy on 2017/8/8.
*/
@SuppressLint("ValidFragment") public class DownloadDialogFragment
extends BaseDialog<DialogFragmentDownloadBinding> implements View.OnClickListener{
extends BaseDialog<DialogFragmentDownloadBinding> implements View.OnClickListener {
private DownloadEntity mEntity;
private static final String DOWNLOAD_URL =
"http://res3.d.cn/android/new/game/2/78702/fzjh_1499390260312.apk?f=web_1";
@@ -31,10 +34,16 @@ import com.arialyy.simple.databinding.DialogFragmentDownloadBinding;
@Override protected void init(Bundle savedInstanceState) {
super.init(savedInstanceState);
Aria.download(getContext()).register();
DownloadEntity entity = Aria.download(getContext()).getDownloadEntity(DOWNLOAD_URL);
if (entity != null) {
getBinding().setFileSize(CommonUtil.formatFileSize(entity.getFileSize()));
getBinding().setProgress((int) (entity.getCurrentProgress() * 100 / entity.getFileSize()));
mEntity = Aria.download(getContext()).getFirstDownloadEntity(DOWNLOAD_URL);
if (mEntity != null) {
if (mEntity.getState() == IEntity.STATE_RUNNING) {
getBinding().setStateStr(getString(R.string.stop));
} else {
getBinding().setStateStr(getString(R.string.resume));
}
getBinding().setFileSize(CommonUtil.formatFileSize(mEntity.getFileSize()));
getBinding().setProgress((int) (mEntity.getCurrentProgress() * 100 / mEntity.getFileSize()));
}
mRootView.findViewById(R.id.start).setOnClickListener(this);
mRootView.findViewById(R.id.stop).setOnClickListener(this);
@@ -90,24 +99,30 @@ import com.arialyy.simple.databinding.DialogFragmentDownloadBinding;
getBinding().setSpeed("");
}
@Download.onNoSupportBreakPoint(DOWNLOAD_URL)
public void onNoSupportBreakPoint(DownloadTask task) {
T.showShort(getContext(), "该下载链接不支持断点");
}
public void onClick(View view) {
switch (view.getId()) {
case R.id.start:
Aria.download(getContext())
.load(DOWNLOAD_URL)
.setFilePath(Environment.getExternalStorageDirectory().getPath() + "/放置江湖.apk")
.start();
break;
case R.id.stop:
Aria.download(getContext()).load(DOWNLOAD_URL).stop();
if (!AppUtil.chekEntityValid(mEntity)) {
Aria.download(getContext())
.load(DOWNLOAD_URL)
.setFilePath(Environment.getExternalStorageDirectory().getPath() + "/放置江湖.apk")
.start();
getBinding().setStateStr(getString(R.string.stop));
break;
}
if (Aria.download(this).load(mEntity.getId()).isRunning()) {
Aria.download(this).load(mEntity.getId()).stop();
getBinding().setStateStr(getString(R.string.resume));
} else {
Aria.download(this).load(mEntity.getId()).resume();
getBinding().setStateStr(getString(R.string.stop));
}
break;
case R.id.cancel:
Aria.download(getContext()).load(DOWNLOAD_URL).cancel();
if (AppUtil.chekEntityValid(mEntity)) {
Aria.download(getContext()).load(mEntity.getId()).cancel();
}
break;
}
}

View File

@@ -26,11 +26,12 @@ import android.widget.TextView;
import com.arialyy.annotations.Download;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.download.DownloadEntity;
import com.arialyy.aria.core.download.DownloadTarget;
import com.arialyy.aria.core.download.DownloadTask;
import com.arialyy.aria.core.inf.IEntity;
import com.arialyy.aria.util.CommonUtil;
import com.arialyy.frame.core.AbsPopupWindow;
import com.arialyy.simple.R;
import com.arialyy.simple.util.AppUtil;
import com.arialyy.simple.widget.HorizontalProgressBarWithNumber;
/**
@@ -39,10 +40,10 @@ import com.arialyy.simple.widget.HorizontalProgressBarWithNumber;
public class DownloadPopupWindow extends AbsPopupWindow implements View.OnClickListener {
private HorizontalProgressBarWithNumber mPb;
private Button mStart;
private Button mStop;
private Button mCancel;
private TextView mSize;
private TextView mSpeed;
private DownloadEntity mEntity;
private static final String DOWNLOAD_URL =
"http://static.gaoshouyou.com/d/25/57/2e25bd9d4557ba31e9beebacfaf9e804.apk";
@@ -59,44 +60,54 @@ public class DownloadPopupWindow extends AbsPopupWindow implements View.OnClickL
private void initWidget() {
mPb = mView.findViewById(R.id.progressBar);
mStart = mView.findViewById(R.id.start);
mStop = mView.findViewById(R.id.stop);
mCancel = mView.findViewById(R.id.cancel);
mSize = mView.findViewById(R.id.size);
mSpeed = mView.findViewById(R.id.speed);
mStart.setOnClickListener(this);
mStop.setOnClickListener(this);
mCancel.setOnClickListener(this);
if (Aria.download(this).taskExists(DOWNLOAD_URL)) {
DownloadTarget target = Aria.download(this).load(DOWNLOAD_URL);
int p = (int) (target.getCurrentProgress() * 100 / target.getFileSize());
mPb.setProgress(p);
mEntity = Aria.download(this).getFirstDownloadEntity(DOWNLOAD_URL);
if (mEntity != null) {
mPb.setProgress(mEntity.getPercent());
mSize.setText(CommonUtil.formatFileSize(mEntity.getFileSize()));
if (mEntity.getState() == IEntity.STATE_RUNNING) {
mStart.setText(getContext().getString(R.string.stop));
} else {
mStart.setText(getContext().getString(R.string.resume));
}
} else {
mStart.setText(getContext().getString(R.string.start));
}
Aria.download(this).register();
DownloadEntity entity = Aria.download(this).getDownloadEntity(DOWNLOAD_URL);
if (entity != null) {
mSize.setText(CommonUtil.formatFileSize(entity.getFileSize()));
int state = entity.getState();
setBtState(state != DownloadEntity.STATE_RUNNING);
} else {
setBtState(true);
}
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.start:
Aria.download(this)
.load(DOWNLOAD_URL)
.setFilePath(Environment.getExternalStorageDirectory().getPath() + "/消消乐.apk")
.start();
break;
case R.id.stop:
Aria.download(this).load(DOWNLOAD_URL).stop();
if (!AppUtil.chekEntityValid(mEntity)) {
Aria.download(this)
.load(DOWNLOAD_URL)
.setFilePath(Environment.getExternalStorageDirectory().getPath() + "/消消乐.apk")
.start();
mStart.setText(getContext().getString(R.string.stop));
break;
}
if (Aria.download(this).load(mEntity.getId()).isRunning()) {
Aria.download(this).load(mEntity.getId()).stop();
mStart.setText(getContext().getString(R.string.resume));
} else {
Aria.download(this).load(mEntity.getId()).resume();
mStart.setText(getContext().getString(R.string.stop));
}
break;
case R.id.cancel:
Aria.download(this).load(DOWNLOAD_URL).cancel();
if (AppUtil.chekEntityValid(mEntity)) {
Aria.download(this).load(mEntity.getId()).cancel();
}
break;
}
}
@@ -105,24 +116,16 @@ public class DownloadPopupWindow extends AbsPopupWindow implements View.OnClickL
}
private void setBtState(boolean startEnable) {
mStart.setEnabled(startEnable);
mCancel.setEnabled(!startEnable);
mStop.setEnabled(!startEnable);
}
@Download.onTaskPre public void onTaskPre(DownloadTask task) {
mSize.setText(CommonUtil.formatFileSize(task.getFileSize()));
setBtState(false);
}
@Download.onTaskStop public void onTaskStop(DownloadTask task) {
setBtState(true);
mSpeed.setText("0.0kb/s");
mStart.setText(getContext().getString(R.string.resume));
}
@Download.onTaskCancel public void onTaskCancel(DownloadTask task) {
setBtState(true);
mPb.setProgress(0);
mSpeed.setText("0.0kb/s");
}

View File

@@ -17,19 +17,16 @@ package com.arialyy.simple.core.download;
import android.arch.lifecycle.Observer;
import android.arch.lifecycle.ViewModelProviders;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.util.Log;
import android.view.View;
import com.arialyy.annotations.Download;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.common.controller.ControllerType;
import com.arialyy.aria.core.download.DownloadEntity;
import com.arialyy.aria.core.download.DownloadTask;
import com.arialyy.aria.core.download.FtpDownloadTarget;
import com.arialyy.aria.core.inf.IEntity;
import com.arialyy.aria.util.ALog;
import com.arialyy.aria.util.CommonUtil;
import com.arialyy.frame.util.show.L;
import com.arialyy.frame.util.show.T;
@@ -49,7 +46,7 @@ import java.io.IOException;
public class FtpDownloadActivity extends BaseActivity<ActivityFtpDownloadBinding> {
private String mUrl, mFilePath;
private FtpDownloadModule mModule;
private FtpDownloadTarget mTarget;
private DownloadEntity mEntity;
@Override protected void init(Bundle savedInstanceState) {
super.init(savedInstanceState);
@@ -63,10 +60,10 @@ public class FtpDownloadActivity extends BaseActivity<ActivityFtpDownloadBinding
if (entity == null) {
return;
}
mTarget = Aria.download(FtpDownloadActivity.this).loadFtp(entity.getUrl());
if (mTarget.getTaskState() == IEntity.STATE_STOP) {
mEntity = entity;
if (mEntity.getState() == IEntity.STATE_STOP) {
getBinding().setStateStr(getString(R.string.resume));
} else if (mTarget.isRunning()) {
} else if (mEntity.getState() == IEntity.STATE_RUNNING) {
getBinding().setStateStr(getString(R.string.stop));
}
@@ -92,18 +89,30 @@ public class FtpDownloadActivity extends BaseActivity<ActivityFtpDownloadBinding
public void onClick(View view) {
switch (view.getId()) {
case R.id.start:
if (mTarget.isRunning()) {
getBinding().setStateStr(getString(R.string.resume));
Aria.download(this).loadFtp(mUrl).stop();
} else {
getBinding().setStateStr(getString(R.string.stop));
Aria.download(this).loadFtp(mUrl).login("N0rI", "0qcK")
if (!AppUtil.chekEntityValid(mEntity)) {
Aria.download(this).loadFtp(mUrl)
.setFilePath(mFilePath, true)
.option().login("N0rI", "0qcK")
.controller(ControllerType.START_CONTROLLER)
.start();
getBinding().setStateStr(getString(R.string.stop));
break;
}
if (Aria.download(this).load(mEntity.getId()).isRunning()) {
getBinding().setStateStr(getString(R.string.resume));
Aria.download(this).loadFtp(mEntity.getId()).stop();
} else {
Aria.download(this).loadFtp(mEntity.getId()).resume();
getBinding().setStateStr(getString(R.string.stop));
}
break;
case R.id.cancel:
Aria.download(this).loadFtp(mUrl).cancel();
if (AppUtil.chekEntityValid(mEntity)) {
Aria.download(this).loadFtp(mEntity.getId()).cancel();
}
break;
}
}
@@ -170,9 +179,8 @@ public class FtpDownloadActivity extends BaseActivity<ActivityFtpDownloadBinding
super.dataCallback(result, data);
if (result == ModifyUrlDialog.MODIFY_URL_DIALOG_RESULT) {
mModule.uploadUrl(this, String.valueOf(data));
}else if (result == DirChooseDialog.DIR_CHOOSE_DIALOG_RESULT) {
} else if (result == DirChooseDialog.DIR_CHOOSE_DIALOG_RESULT) {
mModule.updateFilePath(this, String.valueOf(data));
}
}
}

View File

@@ -48,7 +48,7 @@ public class FtpDownloadModule extends BaseViewModule {
String url = AppUtil.getConfigValue(context, FTP_URL_KEY, ftpDefUrl);
String filePath = AppUtil.getConfigValue(context, FTP_PATH_KEY, ftpDefPath);
singDownloadInfo = Aria.download(context).getDownloadEntity(url);
singDownloadInfo = Aria.download(context).getFirstDownloadEntity(url);
if (singDownloadInfo == null) {
singDownloadInfo = new DownloadEntity();
singDownloadInfo.setUrl(url);

View File

@@ -1,244 +1,254 @@
/*
* 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.core.download;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.arialyy.annotations.Download;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.download.DownloadEntity;
import com.arialyy.aria.core.download.DownloadTarget;
import com.arialyy.aria.core.download.DownloadTask;
import com.arialyy.aria.core.inf.AbsEntity;
import com.arialyy.aria.core.inf.IEntity;
import com.arialyy.frame.util.show.L;
import com.arialyy.simple.R;
import com.arialyy.simple.base.BaseActivity;
import com.arialyy.simple.databinding.ActivityHighestPriorityBinding;
import com.arialyy.simple.core.download.multi_download.DownloadAdapter;
import com.arialyy.simple.widget.HorizontalProgressBarWithNumber;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* Created by lyy on 2017/6/2.
* 最高优先级任务Demo
*/
public class HighestPriorityActivity extends BaseActivity<ActivityHighestPriorityBinding> {
private HorizontalProgressBarWithNumber mPb;
private Button mStart;
private Button mStop;
private Button mCancel;
private TextView mSize;
private TextView mSpeed;
private RecyclerView mList;
private String mTaskName = "光明大陆";
private static final String DOWNLOAD_URL =
"https://res5.d.cn/6f78ee3bcfdd033e64892a8553a95814cf5b4a62b12a76d9eb2a694905f0dc30fa5c7f728806a4ee0b3479e7b26a38707dac92b136add91191ac1219aadb4a3aa70bfa6d06d2d8db.apk";
private DownloadAdapter mAdapter;
private List<AbsEntity> mData = new ArrayList<>();
private Set<String> mRecord = new HashSet<>();
@Override protected int setLayoutId() {
return R.layout.activity_highest_priority;
}
@Override protected void init(Bundle savedInstanceState) {
super.init(savedInstanceState);
mPb = findViewById(R.id.progressBar);
mStart = findViewById(R.id.start);
mStop = findViewById(R.id.stop);
mCancel = findViewById(R.id.cancel);
mSize = findViewById(R.id.size);
mSpeed = findViewById(R.id.speed);
mList = findViewById(R.id.list);
setTitle("最高优先级任务");
getBinding().setTaskName("任务名:" + mTaskName + " 最高优先级任务");
initWidget();
Aria.download(this).register();
}
private void initWidget() {
DownloadTarget target = Aria.download(this).load(DOWNLOAD_URL);
mPb.setProgress(target.getPercent());
if (target.getTaskState() == IEntity.STATE_STOP) {
mStart.setText("恢复");
mStart.setTextColor(getResources().getColor(android.R.color.holo_blue_light));
setBtState(true);
} else if (target.isRunning()) {
setBtState(false);
}
mSize.setText(target.getConvertFileSize());
List<DownloadEntity> temp = Aria.download(this).getTaskList();
if (temp != null && !temp.isEmpty()) {
for (DownloadEntity entity : temp) {
if (entity.getUrl().equals(DOWNLOAD_URL)) continue;
mData.add(entity);
mRecord.add(entity.getUrl());
}
}
mAdapter = new DownloadAdapter(this, mData);
mList.setLayoutManager(new LinearLayoutManager(this));
mList.setAdapter(mAdapter);
}
@Override public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_highest_priority, menu);
return super.onCreateOptionsMenu(menu);
}
@Override public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.add_task:
List<DownloadEntity> temp = getModule(DownloadModule.class).getHighestTestList();
for (DownloadEntity entity : temp) {
String url = entity.getUrl();
if (mRecord.contains(url)) {
continue;
}
mAdapter.addDownloadEntity(entity);
mRecord.add(url);
}
mAdapter.notifyDataSetChanged();
break;
case R.id.help:
String title = "最高优先级任务介绍";
String msg = " 将任务设置为最高优先级任务,最高优先级任务有以下特点:\n"
+ " 1、在下载队列中有且只有一个最高优先级任务\n"
+ " 2、最高优先级任务会一直存在直到用户手动暂停或任务完成\n"
+ " 3、任务调度器不会暂停最高优先级任务\n"
+ " 4、用户手动暂停或任务完成后第二次重新执行该任务该命令将失效\n"
+ " 5、如果下载队列中已经满了则会停止队尾的任务当高优先级任务完成后该队尾任务将自动执行\n"
+ " 6、把任务设置为最高优先级任务后将自动执行任务不需要重新调用start()启动任务";
showMsgDialog(title, msg);
break;
}
return true;
}
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(DOWNLOAD_URL)
.setFilePath(Environment.getExternalStorageDirectory().getPath()
+ "/Download/"
+ mTaskName
+ ".apk")
.setHighestPriority();
} 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;
}
}
/**
* 设置start 和 stop 按钮状态
*/
private void setBtState(boolean state) {
mStart.setEnabled(state);
mStop.setEnabled(!state);
}
@Download.onPre public void onPre(DownloadTask task) {
mAdapter.updateState(task.getDownloadEntity());
}
@Download.onTaskPre public void onTaskPre(DownloadTask task) {
if (task.getKey().equals(DOWNLOAD_URL)) {
mSize.setText(task.getConvertFileSize());
}
mAdapter.updateState(task.getDownloadEntity());
}
@Download.onTaskStart public void onTaskStart(DownloadTask task) {
if (task.getKey().equals(DOWNLOAD_URL)) {
setBtState(false);
}
mAdapter.updateState(task.getDownloadEntity());
}
@Download.onTaskResume public void onTaskResume(DownloadTask task) {
if (task.getKey().equals(DOWNLOAD_URL)) {
setBtState(false);
}
mAdapter.updateState(task.getDownloadEntity());
}
@Download.onTaskStop public void onTaskStop(DownloadTask task) {
if (task.getKey().equals(DOWNLOAD_URL)) {
setBtState(true);
mStart.setText("恢复");
mStart.setTextColor(getResources().getColor(android.R.color.holo_blue_light));
}
mAdapter.updateState(task.getDownloadEntity());
}
@Download.onTaskCancel public void onTaskCancel(DownloadTask task) {
if (task.getKey().equals(DOWNLOAD_URL)) {
setBtState(true);
mStart.setText("开始");
mPb.setProgress(0);
}
mAdapter.updateState(task.getDownloadEntity());
}
@Download.onTaskFail public void onTaskFail(DownloadTask task) {
if (task.getKey().equals(DOWNLOAD_URL)) {
setBtState(true);
} else {
L.d(TAG, "download fail【" + task.getKey() + "");
}
}
@Download.onTaskComplete public void onTaskComplete(DownloadTask task) {
if (task.getKey().equals(DOWNLOAD_URL)) {
setBtState(true);
mStart.setText("重新开始");
mStart.setTextColor(getResources().getColor(android.R.color.holo_green_light));
mPb.setProgress(100);
}
mAdapter.updateState(task.getDownloadEntity());
}
@Download.onTaskRunning public void onTaskRunning(DownloadTask task) {
if (task.getKey().equals(DOWNLOAD_URL)) {
mPb.setProgress(task.getPercent());
mSpeed.setText(task.getConvertSpeed());
}
mAdapter.setProgress(task.getDownloadEntity());
}
}
/*
* 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.core.download;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.arialyy.annotations.Download;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.download.DownloadEntity;
import com.arialyy.aria.core.download.DownloadTask;
import com.arialyy.aria.core.inf.AbsEntity;
import com.arialyy.aria.core.inf.IEntity;
import com.arialyy.frame.util.show.L;
import com.arialyy.simple.R;
import com.arialyy.simple.base.BaseActivity;
import com.arialyy.simple.core.download.multi_download.DownloadAdapter;
import com.arialyy.simple.databinding.ActivityHighestPriorityBinding;
import com.arialyy.simple.util.AppUtil;
import com.arialyy.simple.widget.HorizontalProgressBarWithNumber;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* Created by lyy on 2017/6/2.
* 最高优先级任务Demo
*/
public class HighestPriorityActivity extends BaseActivity<ActivityHighestPriorityBinding> {
private HorizontalProgressBarWithNumber mPb;
private Button mStart;
private Button mStop;
private Button mCancel;
private TextView mSize;
private TextView mSpeed;
private RecyclerView mList;
private DownloadEntity mEntity;
private String mTaskName = "光明大陆";
private static final String DOWNLOAD_URL =
"https://res5.d.cn/6f78ee3bcfdd033e64892a8553a95814cf5b4a62b12a76d9eb2a694905f0dc30fa5c7f728806a4ee0b3479e7b26a38707dac92b136add91191ac1219aadb4a3aa70bfa6d06d2d8db.apk";
private DownloadAdapter mAdapter;
private List<AbsEntity> mData = new ArrayList<>();
private Set<String> mRecord = new HashSet<>();
@Override protected int setLayoutId() {
return R.layout.activity_highest_priority;
}
@Override protected void init(Bundle savedInstanceState) {
super.init(savedInstanceState);
mPb = findViewById(R.id.progressBar);
mStart = findViewById(R.id.start);
mStop = findViewById(R.id.stop);
mCancel = findViewById(R.id.cancel);
mSize = findViewById(R.id.size);
mSpeed = findViewById(R.id.speed);
mList = findViewById(R.id.list);
setTitle("最高优先级任务");
getBinding().setTaskName("任务名:" + mTaskName + " (最高优先级任务)");
initWidget();
Aria.download(this).register();
}
private void initWidget() {
mEntity = Aria.download(this).getFirstDownloadEntity(DOWNLOAD_URL);
if (mEntity != null) {
mPb.setProgress(mEntity.getPercent());
if (mEntity.getState() == IEntity.STATE_STOP) {
mStart.setText("恢复");
mStart.setTextColor(getResources().getColor(android.R.color.holo_blue_light));
setBtState(true);
} else if (mEntity.getState() == IEntity.STATE_RUNNING) {
setBtState(false);
}
mSize.setText(mEntity.getConvertFileSize());
}
List<DownloadEntity> temp = Aria.download(this).getTaskList();
if (temp != null && !temp.isEmpty()) {
for (DownloadEntity entity : temp) {
if (entity.getUrl().equals(DOWNLOAD_URL)) continue;
mData.add(entity);
mRecord.add(entity.getUrl());
}
}
mAdapter = new DownloadAdapter(this, mData);
mList.setLayoutManager(new LinearLayoutManager(this));
mList.setAdapter(mAdapter);
}
@Override public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_highest_priority, menu);
return super.onCreateOptionsMenu(menu);
}
@Override public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.add_task:
List<DownloadEntity> temp = getModule(DownloadModule.class).getHighestTestList();
for (DownloadEntity entity : temp) {
String url = entity.getUrl();
if (mRecord.contains(url)) {
continue;
}
mAdapter.addDownloadEntity(entity);
mRecord.add(url);
}
mAdapter.notifyDataSetChanged();
break;
case R.id.help:
String title = "最高优先级任务介绍";
String msg = " 将任务设置为最高优先级任务,最高优先级任务有以下特点:\n"
+ " 1、在下载队列中有且只有一个最高优先级任务\n"
+ " 2、最高优先级任务会一直存在直到用户手动暂停或任务完成\n"
+ " 3、任务调度器不会暂停最高优先级任务\n"
+ " 4、用户手动暂停或任务完成后第二次重新执行该任务该命令将失效\n"
+ " 5、如果下载队列中已经满了则会停止队尾的任务当高优先级任务完成后该队尾任务将自动执行\n"
+ " 6、把任务设置为最高优先级任务后将自动执行任务不需要重新调用start()启动任务";
showMsgDialog(title, msg);
break;
}
return true;
}
public void onClick(View view) {
switch (view.getId()) {
case R.id.start:
if (AppUtil.chekEntityValid(mEntity)) {
Aria.download(this)
.load(DOWNLOAD_URL)
.setFilePath(Environment.getExternalStorageDirectory().getPath()
+ "/Download/"
+ mTaskName
+ ".apk")
.setHighestPriority();
} else {
Aria.download(this).load(mEntity.getId()).resume();
}
((TextView) view).setText(getString(R.string.stop));
break;
case R.id.stop:
if (AppUtil.chekEntityValid(mEntity)) {
Aria.download(this).load(mEntity.getId()).stop();
}
((TextView) view).setText(getString(R.string.resume));
break;
case R.id.cancel:
if (AppUtil.chekEntityValid(mEntity)) {
Aria.download(this).load(mEntity.getId()).cancel();
}
break;
}
}
/**
* 设置start 和 stop 按钮状态
*/
private void setBtState(boolean state) {
mStart.setEnabled(state);
mStop.setEnabled(!state);
}
@Download.onPre public void onPre(DownloadTask task) {
mAdapter.updateState(task.getDownloadEntity());
}
@Download.onTaskPre public void onTaskPre(DownloadTask task) {
if (task.getKey().equals(DOWNLOAD_URL)) {
mSize.setText(task.getConvertFileSize());
}
mAdapter.updateState(task.getDownloadEntity());
}
@Download.onTaskStart public void onTaskStart(DownloadTask task) {
if (task.getKey().equals(DOWNLOAD_URL)) {
setBtState(false);
}
mAdapter.updateState(task.getDownloadEntity());
}
@Download.onTaskResume public void onTaskResume(DownloadTask task) {
if (task.getKey().equals(DOWNLOAD_URL)) {
setBtState(false);
}
mAdapter.updateState(task.getDownloadEntity());
}
@Download.onTaskStop public void onTaskStop(DownloadTask task) {
if (task.getKey().equals(DOWNLOAD_URL)) {
setBtState(true);
mStart.setText("恢复");
mStart.setTextColor(getResources().getColor(android.R.color.holo_blue_light));
}
mAdapter.updateState(task.getDownloadEntity());
}
@Download.onTaskCancel public void onTaskCancel(DownloadTask task) {
if (task.getKey().equals(DOWNLOAD_URL)) {
setBtState(true);
mStart.setText("开始");
mPb.setProgress(0);
}
mAdapter.updateState(task.getDownloadEntity());
}
@Download.onTaskFail public void onTaskFail(DownloadTask task) {
if (task.getKey().equals(DOWNLOAD_URL)) {
setBtState(true);
} else {
L.d(TAG, "download fail【" + task.getKey() + "");
}
}
@Download.onTaskComplete public void onTaskComplete(DownloadTask task) {
if (task.getKey().equals(DOWNLOAD_URL)) {
setBtState(true);
mStart.setText("重新开始");
mStart.setTextColor(getResources().getColor(android.R.color.holo_green_light));
mPb.setProgress(100);
}
mAdapter.updateState(task.getDownloadEntity());
}
@Download.onTaskRunning public void onTaskRunning(DownloadTask task) {
if (task.getKey().equals(DOWNLOAD_URL)) {
mPb.setProgress(task.getPercent());
mSpeed.setText(task.getConvertSpeed());
}
mAdapter.setProgress(task.getDownloadEntity());
}
}

View File

@@ -50,13 +50,13 @@ public class HttpDownloadModule extends BaseViewModule {
String url = AppUtil.getConfigValue(context, HTTP_URL_KEY, defUrl);
String filePath = AppUtil.getConfigValue(context, HTTP_PATH_KEY, defFilePath);
singDownloadInfo = Aria.download(context).getDownloadEntity(url);
singDownloadInfo = Aria.download(context).getFirstDownloadEntity(url);
if (singDownloadInfo == null) {
singDownloadInfo = new DownloadEntity();
singDownloadInfo.setUrl(url);
File temp = new File(defFilePath);
singDownloadInfo.setDownloadPath(filePath);
singDownloadInfo.setFileName(temp.getName());
File file = new File(defFilePath);
singDownloadInfo.setFilePath(filePath);
singDownloadInfo.setFileName(file.getName());
} else {
AppUtil.setConfigValue(context, HTTP_PATH_KEY, singDownloadInfo.getDownloadPath());
AppUtil.setConfigValue(context, HTTP_URL_KEY, singDownloadInfo.getUrl());
@@ -79,7 +79,7 @@ public class HttpDownloadModule extends BaseViewModule {
File temp = new File(filePath);
AppUtil.setConfigValue(context, HTTP_PATH_KEY, filePath);
singDownloadInfo.setFileName(temp.getName());
singDownloadInfo.setDownloadPath(filePath);
singDownloadInfo.setFilePath(filePath);
liveData.postValue(singDownloadInfo);
}

View File

@@ -27,14 +27,11 @@ import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.widget.Toast
import com.arialyy.annotations.Download
import com.arialyy.aria.core.Aria
import com.arialyy.aria.core.download.DownloadEntity
import com.arialyy.aria.core.download.DownloadTarget
import com.arialyy.aria.core.download.DownloadTask
import com.arialyy.aria.core.inf.IEntity
import com.arialyy.aria.core.inf.IHttpFileLenAdapter
import com.arialyy.aria.core.scheduler.ISchedulers
import com.arialyy.aria.util.ALog
import com.arialyy.aria.util.CommonUtil
@@ -46,7 +43,6 @@ import com.arialyy.simple.common.ModifyUrlDialog
import com.arialyy.simple.databinding.ActivitySingleKotlinBinding
import com.arialyy.simple.util.AppUtil
import com.pddstudio.highlightjs.models.Language
import java.io.IOException
class KotlinDownloadActivity : BaseActivity<ActivitySingleKotlinBinding>() {
@@ -54,7 +50,7 @@ class KotlinDownloadActivity : BaseActivity<ActivitySingleKotlinBinding>() {
private var mUrl: String? = null
private var mFilePath: String? = null
private var mModule: HttpDownloadModule? = null
private var mTarget: DownloadTarget? = null
private val mTaskId: Long = -1
internal var receiver: BroadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(
@@ -99,11 +95,11 @@ class KotlinDownloadActivity : BaseActivity<ActivitySingleKotlinBinding>() {
if (entity == null) {
return@Observer
}
mTarget = Aria.download(this)
.load(entity.url)
if (mTarget!!.taskState == IEntity.STATE_STOP) {
if (entity.state == IEntity.STATE_STOP) {
binding.stateStr = getString(R.string.resume)
} else if (mTarget!!.isRunning) {
}
if (Aria.download(this).load(entity.id).isRunning) {
binding.stateStr = getString(R.string.stop)
}
@@ -265,15 +261,15 @@ class KotlinDownloadActivity : BaseActivity<ActivitySingleKotlinBinding>() {
fun onClick(view: View) {
when (view.id) {
R.id.start -> if (mTarget!!.isRunning) {
R.id.start -> if (Aria.download(this).load(mTaskId).isRunning) {
Aria.download(this)
.load(mUrl!!)
.load(mTaskId)
.stop()
} else {
startD()
}
R.id.stop -> Aria.download(this).load(mUrl!!).stop()
R.id.cancel -> Aria.download(this).load(mUrl!!).cancel(true)
R.id.stop -> Aria.download(this).load(mTaskId).stop()
R.id.cancel -> Aria.download(this).load(mTaskId).cancel(true)
}
}

View File

@@ -32,7 +32,6 @@ import android.widget.Toast;
import com.arialyy.annotations.Download;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.download.DownloadEntity;
import com.arialyy.aria.core.download.DownloadTarget;
import com.arialyy.aria.core.download.DownloadTask;
import com.arialyy.aria.core.inf.IEntity;
import com.arialyy.aria.core.inf.IHttpFileLenAdapter;
@@ -56,7 +55,7 @@ public class SingleTaskActivity extends BaseActivity<ActivitySingleBinding> {
private String mUrl;
private String mFilePath;
private HttpDownloadModule mModule;
private DownloadTarget mTarget;
private DownloadEntity mEntity;
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
@@ -96,10 +95,11 @@ public class SingleTaskActivity extends BaseActivity<ActivitySingleBinding> {
if (entity == null) {
return;
}
mTarget = Aria.download(SingleTaskActivity.this).load(entity.getUrl());
if (mTarget.getTaskState() == IEntity.STATE_STOP) {
mEntity = entity;
if (mEntity.getState() == IEntity.STATE_STOP) {
getBinding().setStateStr(getString(R.string.resume));
} else if (mTarget.isRunning()) {
} else if (mEntity.getState() == IEntity.STATE_RUNNING) {
getBinding().setStateStr(getString(R.string.stop));
}
@@ -267,14 +267,19 @@ public class SingleTaskActivity extends BaseActivity<ActivitySingleBinding> {
public void onClick(View view) {
switch (view.getId()) {
case R.id.start:
if (mTarget.isRunning()) {
Aria.download(this).load(mUrl).stop();
} else {
if (!AppUtil.chekEntityValid(mEntity)) {
startD();
}
if (Aria.download(this).load(mEntity.getId()).isRunning()) {
Aria.download(this).load(mEntity.getId()).stop();
} else {
Aria.download(this).load(mEntity.getId()).resume();
}
break;
case R.id.cancel:
Aria.download(this).load(mUrl).cancel(true);
if (AppUtil.chekEntityValid(mEntity)) {
Aria.download(this).load(mEntity.getId()).cancel(true);
}
break;
}
}
@@ -282,10 +287,6 @@ public class SingleTaskActivity extends BaseActivity<ActivitySingleBinding> {
private void startD() {
Aria.download(SingleTaskActivity.this)
.load(mUrl)
//.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3")
//.addHeader("Accept-Encoding", "gzip, deflate")
//.addHeader("DNT", "1")
//.addHeader("Cookie", "BAIDUID=648E5FF020CC69E8DD6F492D1068AAA9:FG=1; BIDUPSID=648E5FF020CC69E8DD6F492D1068AAA9; PSTM=1519099573; BD_UPN=12314753; locale=zh; BDSVRTM=0")
.useServerFileName(true)
.setFilePath(mFilePath, true)
.setFileLenAdapter(new IHttpFileLenAdapter() {

View File

@@ -21,14 +21,15 @@ import android.os.Environment;
import android.view.View;
import android.widget.Button;
import com.arialyy.annotations.Download;
import com.arialyy.aria.core.download.DownloadTarget;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.download.DownloadEntity;
import com.arialyy.aria.core.download.DownloadTask;
import com.arialyy.aria.core.inf.IEntity;
import com.arialyy.aria.util.CommonUtil;
import com.arialyy.frame.core.AbsFragment;
import com.arialyy.simple.R;
import com.arialyy.simple.databinding.FragmentDownloadBinding;
import com.arialyy.simple.util.AppUtil;
/**
* Created by lyy on 2017/1/4.
@@ -36,31 +37,30 @@ import com.arialyy.simple.databinding.FragmentDownloadBinding;
public class DownloadFragment extends AbsFragment<FragmentDownloadBinding>
implements View.OnClickListener {
Button mStart;
Button mStop;
Button mCancel;
private DownloadEntity mEntity;
private static final String DOWNLOAD_URL =
"https://res5.d.cn/2137e42d610b3488d9420c6421529386eee5bdbfd9be1fafe0a05d6dabaec8c156ddbd00581055bbaeac03904fb63310e80010680235d16bd4c040b50096a0c20dd1c4b0854529a1.apk";
@Override protected void init(Bundle savedInstanceState) {
mStart = mRootView.findViewById(R.id.start);
mStop = mRootView.findViewById(R.id.stop);
mCancel = mRootView.findViewById(R.id.cancel);
mStart.setOnClickListener(this);
mStop.setOnClickListener(this);
mCancel.setOnClickListener(this);
if (Aria.download(this).taskExists(DOWNLOAD_URL)) {
DownloadTarget target = Aria.download(this).load(DOWNLOAD_URL);
getBinding().setProgress(target.getPercent());
}
DownloadEntity entity = Aria.download(this).getDownloadEntity(DOWNLOAD_URL);
if (entity != null) {
getBinding().setFileSize(CommonUtil.formatFileSize(entity.getFileSize()));
int state = entity.getState();
setBtState(state != DownloadEntity.STATE_RUNNING);
mEntity = Aria.download(this).getFirstDownloadEntity(DOWNLOAD_URL);
if (mEntity != null) {
getBinding().setFileSize(CommonUtil.formatFileSize(mEntity.getFileSize()));
int state = mEntity.getState();
getBinding().setProgress(mEntity.getPercent());
if (mEntity.getState() == IEntity.STATE_RUNNING) {
getBinding().setStateStr(getString(R.string.stop));
} else {
getBinding().setStateStr(getString(R.string.resume));
}
} else {
setBtState(true);
getBinding().setStateStr(getString(R.string.start));
}
Aria.download(this).register();
}
@@ -68,34 +68,44 @@ public class DownloadFragment extends AbsFragment<FragmentDownloadBinding>
public void onClick(View view) {
switch (view.getId()) {
case R.id.start:
Aria.download(this)
.load(DOWNLOAD_URL)
.setFilePath(Environment.getExternalStorageDirectory().getPath() + "/王者军团.apk")
.start();
break;
case R.id.stop:
Aria.download(this).load(DOWNLOAD_URL).pause();
if (!AppUtil.chekEntityValid(mEntity)) {
Aria.download(this)
.load(DOWNLOAD_URL)
.setFilePath(Environment.getExternalStorageDirectory().getPath() + "/王者军团.apk")
.start();
getBinding().setStateStr(getString(R.string.stop));
break;
}
if (Aria.download(this).load(mEntity.getId()).isRunning()) {
Aria.download(this).load(mEntity.getId()).stop();
getBinding().setStateStr(getString(R.string.resume));
} else {
Aria.download(this).load(mEntity.getId()).resume();
getBinding().setStateStr(getString(R.string.stop));
}
break;
case R.id.cancel:
Aria.download(this).load(DOWNLOAD_URL).cancel();
if (AppUtil.chekEntityValid(mEntity)) {
Aria.download(this).load(mEntity.getId()).cancel();
}
break;
}
}
@Download.onTaskPre public void onTaskPre(DownloadTask task) {
getBinding().setFileSize(task.getConvertFileSize());
setBtState(false);
}
@Download.onTaskStop public void onTaskStop(DownloadTask task) {
setBtState(true);
getBinding().setSpeed("");
getBinding().setStateStr(getString(R.string.resume));
}
@Download.onTaskCancel public void onTaskCancel(DownloadTask task) {
setBtState(true);
getBinding().setProgress(0);
getBinding().setSpeed("");
getBinding().setStateStr(getString(R.string.cancel));
}
@Download.onTaskRunning public void onTaskRunning(DownloadTask task) {
@@ -119,10 +129,4 @@ public class DownloadFragment extends AbsFragment<FragmentDownloadBinding>
@Override protected void dataCallback(int result, Object obj) {
}
private void setBtState(boolean startEnable) {
mStart.setEnabled(startEnable);
mCancel.setEnabled(!startEnable);
mStop.setEnabled(!startEnable);
}
}

View File

@@ -23,8 +23,8 @@ import com.arialyy.annotations.DownloadGroup;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.download.DownloadEntity;
import com.arialyy.aria.core.download.DownloadGroupEntity;
import com.arialyy.aria.core.download.DownloadGroupTarget;
import com.arialyy.aria.core.download.DownloadGroupTask;
import com.arialyy.aria.core.inf.IEntity;
import com.arialyy.aria.core.inf.IHttpFileLenAdapter;
import com.arialyy.aria.util.ALog;
import com.arialyy.frame.util.show.L;
@@ -32,6 +32,7 @@ import com.arialyy.frame.util.show.T;
import com.arialyy.simple.R;
import com.arialyy.simple.base.BaseActivity;
import com.arialyy.simple.databinding.ActivityDownloadGroupBinding;
import com.arialyy.simple.util.AppUtil;
import com.arialyy.simple.widget.SubStateLinearLayout;
import java.util.List;
import java.util.Map;
@@ -43,7 +44,7 @@ public class DownloadGroupActivity extends BaseActivity<ActivityDownloadGroupBin
private SubStateLinearLayout mChildList;
private List<String> mUrls;
private DownloadGroupTarget mTarget;
private DownloadGroupEntity mEntity;
@Override protected void init(Bundle savedInstanceState) {
super.init(savedInstanceState);
@@ -52,21 +53,21 @@ public class DownloadGroupActivity extends BaseActivity<ActivityDownloadGroupBin
mChildList = getBinding().childList;
mUrls = getModule(GroupModule.class).getUrls();
DownloadGroupEntity entity = Aria.download(this).getDownloadGroupEntity(mUrls);
if (entity != null) {
mTarget = Aria.download(this).loadGroup(entity);
mChildList.addData(entity.getSubEntities());
mEntity = Aria.download(this).getGroupEntity(mUrls);
if (mEntity != null) {
mChildList.addData(mEntity.getSubEntities());
getBinding().setStateStr(
mTarget.isRunning() ? getString(R.string.stop) : getString(R.string.resume));
getBinding().setFileSize(entity.getConvertFileSize());
if (entity.getFileSize() == 0) {
mEntity.getState() == IEntity.STATE_RUNNING ? getString(R.string.stop)
: getString(R.string.resume));
getBinding().setFileSize(mEntity.getConvertFileSize());
if (mEntity.getFileSize() == 0) {
getBinding().setProgress(0);
} else {
getBinding().setProgress(entity.isComplete() ? 100
: (int) (entity.getCurrentProgress() * 100 / entity.getFileSize()));
getBinding().setProgress(mEntity.isComplete() ? 100
: (int) (mEntity.getCurrentProgress() * 100 / mEntity.getFileSize()));
}
ALog.d(TAG,
"size = " + entity.getSubEntities().size() + "; len = " + entity.getConvertFileSize());
"size = " + mEntity.getSubEntities().size() + "; len = " + mEntity.getConvertFileSize());
}
mChildList.setOnItemClickListener(new SubStateLinearLayout.OnItemClickListener() {
@@ -89,16 +90,15 @@ public class DownloadGroupActivity extends BaseActivity<ActivityDownloadGroupBin
public void onClick(View view) {
switch (view.getId()) {
case R.id.start:
if (mTarget == null || !mTarget.isRunning()) {
if (!AppUtil.chekEntityValid(mEntity)) {
Aria.download(this)
.loadGroup(mUrls)
.setDirPath(
//Environment.getExternalStorageDirectory().getPath() + "/Download/group_test_5")
Environment.getExternalStorageDirectory().getPath() + "/Download/group_test_2")
.setGroupAlias("任务组测试")
//.setSubFileName(getModule(GroupModule.class).getSubName2())
//.setSubFileName(getModule(GroupModule.class).getSubName())
//.unknownSize()
.setSubFileName(getModule(GroupModule.class).getSubName())
.unknownSize()
.setFileLenAdapter(new IHttpFileLenAdapter() {
@Override public long handleFileLen(Map<String, List<String>> headers) {
@@ -115,13 +115,19 @@ public class DownloadGroupActivity extends BaseActivity<ActivityDownloadGroupBin
//.updateUrls(temp)
.start();
getBinding().setStateStr(getString(R.string.stop));
break;
}
if (Aria.download(this).loadGroup(mEntity.getId()).isRunning()) {
Aria.download(this).loadGroup(mEntity.getId()).stop();
} else {
Aria.download(this).loadGroup(mUrls).stop();
getBinding().setStateStr(getString(R.string.resume));
Aria.download(this).loadGroup(mEntity.getId()).resume();
}
break;
case R.id.cancel:
Aria.download(this).loadGroup(mUrls).cancel(true);
if (AppUtil.chekEntityValid(mEntity)) {
Aria.download(this).loadGroup(mEntity.getId()).cancel(true);
}
break;
}
}
@@ -200,7 +206,7 @@ public class DownloadGroupActivity extends BaseActivity<ActivityDownloadGroupBin
//Log.e(TAG, "gHash = "
// + groupTask.getEntity().getSubEntities().get(0).hashCode()
// + "; subHash = "
// + groupTask.getHttpTaskWrapper().getSubTaskEntities().get(0).getEntity().hashCode() +
// + groupTask.getNormalTaskWrapper().getSubTaskEntities().get(0).getEntity().hashCode() +
// "; subHash = " + subEntity.hashCode());
//int percent = subEntity.getPercent();
////如果你打开了速度单位转换配置将可以通过以下方法获取带单位的下载速度1 mb/s

View File

@@ -20,14 +20,15 @@ import android.os.Environment;
import android.view.View;
import com.arialyy.annotations.DownloadGroup;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.common.controller.ControllerType;
import com.arialyy.aria.core.download.DownloadGroupEntity;
import com.arialyy.aria.core.download.DownloadGroupTask;
import com.arialyy.aria.core.download.DGTaskWrapper;
import com.arialyy.frame.util.show.L;
import com.arialyy.frame.util.show.T;
import com.arialyy.simple.R;
import com.arialyy.simple.base.BaseActivity;
import com.arialyy.simple.databinding.ActivityDownloadGroupBinding;
import com.arialyy.simple.util.AppUtil;
import com.arialyy.simple.widget.SubStateLinearLayout;
/**
@@ -36,22 +37,23 @@ import com.arialyy.simple.widget.SubStateLinearLayout;
public class FTPDirDownloadActivity extends BaseActivity<ActivityDownloadGroupBinding> {
private static final String dir = "ftp://9.9.9.50:21/upload/测试";
SubStateLinearLayout mChildList;
private SubStateLinearLayout mChildList;
private DownloadGroupEntity mEntity;
@Override protected void init(Bundle savedInstanceState) {
super.init(savedInstanceState);
Aria.download(this).register();
setTitle("FTP文件夹下载");
mChildList = findViewById(R.id.child_list);
DownloadGroupEntity entity = Aria.download(this).getFtpDirEntity(dir);
if (entity != null) {
mChildList.addData(entity.getSubEntities());
getBinding().setFileSize(entity.getConvertFileSize());
if (entity.getFileSize() == 0) {
mEntity = Aria.download(this).getFtpDirEntity(dir);
if (mEntity != null) {
mChildList.addData(mEntity.getSubEntities());
getBinding().setFileSize(mEntity.getConvertFileSize());
if (mEntity.getFileSize() == 0) {
getBinding().setProgress(0);
} else {
getBinding().setProgress(entity.isComplete() ? 100
: (int) (entity.getCurrentProgress() * 100 / entity.getFileSize()));
getBinding().setProgress(mEntity.isComplete() ? 100
: (int) (mEntity.getCurrentProgress() * 100 / mEntity.getFileSize()));
}
}
}
@@ -63,20 +65,28 @@ public class FTPDirDownloadActivity extends BaseActivity<ActivityDownloadGroupBi
public void onClick(View view) {
switch (view.getId()) {
case R.id.start:
Aria.download(this)
.loadFtpDir(dir)
.setDirPath(
Environment.getExternalStorageDirectory().getPath() + "/Download/ftp_dir")
.setGroupAlias("ftp文件夹下载")
//.setSubTaskFileName(getModule(GroupModule.class).getSubName())
.login("lao", "123456")
.start();
break;
case R.id.stop:
Aria.download(this).loadFtpDir(dir).stop();
if (!AppUtil.chekEntityValid(mEntity)) {
Aria.download(this)
.loadFtpDir(dir)
.setDirPath(
Environment.getExternalStorageDirectory().getPath() + "/Download/ftp_dir")
.setGroupAlias("ftp文件夹下载")
.option()
.login("lao", "123456")
.controller(ControllerType.START_CONTROLLER)
.start();
break;
}
if (Aria.download(this).loadFtpDir(mEntity.getId()).isRunning()) {
Aria.download(this).loadFtpDir(mEntity.getId()).stop();
} else {
Aria.download(this).loadFtpDir(mEntity.getId()).resume();
}
break;
case R.id.cancel:
Aria.download(this).loadFtpDir(dir).cancel();
if (AppUtil.chekEntityValid(mEntity)) {
Aria.download(this).loadFtpDir(mEntity.getId()).cancel();
}
break;
}
}

View File

@@ -27,8 +27,8 @@ import android.view.View;
import android.widget.Toast;
import com.arialyy.annotations.Download;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.common.controller.ControllerType;
import com.arialyy.aria.core.download.DownloadEntity;
import com.arialyy.aria.core.download.DownloadTarget;
import com.arialyy.aria.core.download.DownloadTask;
import com.arialyy.aria.core.download.m3u8.ILiveTsUrlConverter;
import com.arialyy.aria.util.ALog;
@@ -39,6 +39,7 @@ import com.arialyy.simple.base.BaseActivity;
import com.arialyy.simple.common.ModifyPathDialog;
import com.arialyy.simple.common.ModifyUrlDialog;
import com.arialyy.simple.databinding.ActivityM3u8LiveBinding;
import com.arialyy.simple.util.AppUtil;
import java.io.File;
public class M3U8LiveDLoadActivity extends BaseActivity<ActivityM3u8LiveBinding> {
@@ -46,7 +47,7 @@ public class M3U8LiveDLoadActivity extends BaseActivity<ActivityM3u8LiveBinding>
private String mUrl;
private String mFilePath;
private M3U8LiveModule mModule;
private DownloadTarget mTarget;
private DownloadEntity mEntity;
@Override
protected void init(Bundle savedInstanceState) {
@@ -60,7 +61,7 @@ public class M3U8LiveDLoadActivity extends BaseActivity<ActivityM3u8LiveBinding>
if (entity == null) {
return;
}
mTarget = Aria.download(M3U8LiveDLoadActivity.this).load(entity.getUrl());
mEntity = entity;
getBinding().setStateStr(getString(R.string.start));
getBinding().setUrl(entity.getUrl());
getBinding().setFilePath(entity.getFilePath());
@@ -211,15 +212,20 @@ public class M3U8LiveDLoadActivity extends BaseActivity<ActivityM3u8LiveBinding>
public void onClick(View view) {
switch (view.getId()) {
case R.id.start:
ALog.d(TAG, "isRunning = " + mTarget.isRunning());
if (mTarget.isRunning()) {
Aria.download(this).load(mUrl).stop();
} else {
if (!AppUtil.chekEntityValid(mEntity)) {
startD();
break;
}
if (Aria.download(this).load(mEntity.getId()).isRunning()) {
Aria.download(this).load(mEntity.getId()).stop();
} else {
Aria.download(this).load(mEntity.getId()).resume();
}
break;
case R.id.cancel:
Aria.download(this).load(mUrl).cancel(true);
if (AppUtil.chekEntityValid(mEntity)) {
Aria.download(this).load(mEntity.getId()).cancel(true);
}
break;
}
}
@@ -244,6 +250,7 @@ public class M3U8LiveDLoadActivity extends BaseActivity<ActivityM3u8LiveBinding>
return parentUrl + tsUrl;
}
})
.controller(ControllerType.START_CONTROLLER)
//.setLiveTsUrlConvert(new IVodTsUrlConverter() {
// @Override public List<String> convert(String m3u8Url, List<String> tsUrls) {
// int peerIndex = m3u8Url.lastIndexOf("/");

View File

@@ -47,7 +47,7 @@ public class M3U8LiveModule extends BaseViewModule {
String url = AppUtil.getConfigValue(context, M3U8_LIVE_URL_KEY, defUrl);
String filePath = AppUtil.getConfigValue(context, M3U8_LIVE_PATH_KEY, this.filePath);
singDownloadInfo = Aria.download(context).getDownloadEntity(url);
singDownloadInfo = Aria.download(context).getFirstDownloadEntity(url);
if (singDownloadInfo == null) {
singDownloadInfo = new DownloadEntity();
singDownloadInfo.setUrl(url);

View File

@@ -29,8 +29,9 @@ import android.widget.Toast;
import com.arialyy.annotations.Download;
import com.arialyy.annotations.M3U8;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.common.controller.ControllerType;
import com.arialyy.aria.core.common.controller.StartController;
import com.arialyy.aria.core.download.DownloadEntity;
import com.arialyy.aria.core.download.DownloadTarget;
import com.arialyy.aria.core.download.DownloadTask;
import com.arialyy.aria.core.download.m3u8.IBandWidthUrlConverter;
import com.arialyy.aria.core.download.m3u8.ITsMergeHandler;
@@ -46,6 +47,7 @@ import com.arialyy.simple.common.ModifyPathDialog;
import com.arialyy.simple.common.ModifyUrlDialog;
import com.arialyy.simple.databinding.ActivityM3u8VodBinding;
import com.arialyy.simple.to.PeerIndex;
import com.arialyy.simple.util.AppUtil;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
@@ -58,8 +60,8 @@ public class M3U8VodDLoadActivity extends BaseActivity<ActivityM3u8VodBinding> {
private String mUrl;
private String mFilePath;
private M3U8VodModule mModule;
private DownloadTarget mTarget;
private VideoPlayerFragment mVideoFragment;
private DownloadEntity mEntity;
@Override
protected void init(Bundle savedInstanceState) {
@@ -73,10 +75,10 @@ public class M3U8VodDLoadActivity extends BaseActivity<ActivityM3u8VodBinding> {
if (entity == null) {
return;
}
mTarget = Aria.download(M3U8VodDLoadActivity.this).load(entity.getUrl());
if (mTarget.getTaskState() == IEntity.STATE_STOP) {
mEntity = entity;
if (mEntity.getState() == IEntity.STATE_STOP) {
getBinding().setStateStr(getString(R.string.resume));
} else if (mTarget.isRunning()) {
} else if (mEntity.getState() == IEntity.STATE_RUNNING) {
getBinding().setStateStr(getString(R.string.stop));
}
@@ -270,15 +272,20 @@ public class M3U8VodDLoadActivity extends BaseActivity<ActivityM3u8VodBinding> {
public void onClick(View view) {
switch (view.getId()) {
case R.id.start:
ALog.d(TAG, "isRunning = " + mTarget.isRunning());
if (mTarget.isRunning()) {
Aria.download(this).load(mUrl).stop();
} else {
if (!AppUtil.chekEntityValid(mEntity)) {
startD();
break;
}
if (Aria.download(this).load(mEntity.getId()).isRunning()) {
Aria.download(this).load(mEntity.getId()).stop();
} else {
Aria.download(this).load(mEntity.getId()).resume();
}
break;
case R.id.cancel:
Aria.download(this).load(mUrl).cancel(true);
if (AppUtil.chekEntityValid(mEntity)) {
Aria.download(this).load(mEntity.getId()).cancel(true);
}
break;
}
}
@@ -312,10 +319,15 @@ public class M3U8VodDLoadActivity extends BaseActivity<ActivityM3u8VodBinding> {
return false;
}
})
//.asVod().setPeerIndex(50)
.controller(ControllerType.START_CONTROLLER)
.start();
//.start();
//.asVod().setPeerIndex(50)
//.start();
}
private Class<StartController> c = StartController.class;
@Override protected void dataCallback(int result, Object data) {
super.dataCallback(result, data);
if (result == ModifyUrlDialog.MODIFY_URL_DIALOG_RESULT) {

View File

@@ -49,7 +49,7 @@ public class M3U8VodModule extends BaseViewModule {
String url = AppUtil.getConfigValue(context, M3U8_URL_KEY, defUrl);
String filePath = AppUtil.getConfigValue(context, M3U8_PATH_KEY, this.filePath);
singDownloadInfo = Aria.download(context).getDownloadEntity(url);
singDownloadInfo = Aria.download(context).getFirstDownloadEntity(url);
if (singDownloadInfo == null) {
singDownloadInfo = new DownloadEntity();
singDownloadInfo.setUrl(url);

View File

@@ -33,6 +33,7 @@ import com.arialyy.aria.util.CommonUtil;
import com.arialyy.simple.R;
import com.arialyy.simple.base.adapter.AbsHolder;
import com.arialyy.simple.base.adapter.AbsRVAdapter;
import com.arialyy.simple.util.AppUtil;
import com.arialyy.simple.widget.HorizontalProgressBarWithNumber;
import com.arialyy.simple.widget.SubStateLinearLayout;
import java.util.List;
@@ -269,20 +270,23 @@ public class DownloadAdapter extends AbsRVAdapter<AbsEntity, DownloadAdapter.Sim
}
private void cancel(AbsEntity entity) {
if (!AppUtil.chekEntityValid(entity)) {
return;
}
switch (entity.getTaskType()) {
case AbsTaskWrapper.D_FTP:
Aria.download(getContext())
.loadFtp((DownloadEntity) entity)
.loadFtp(entity.getId())
//.login("lao", "123456")
.cancel(true);
break;
case AbsTaskWrapper.D_FTP_DIR:
break;
case AbsTaskWrapper.D_HTTP:
Aria.download(getContext()).load((DownloadEntity) entity).cancel(true);
Aria.download(getContext()).load(entity.getId()).cancel(true);
break;
case AbsTaskWrapper.DG_HTTP:
Aria.download(getContext()).load((DownloadGroupEntity) entity).cancel(true);
Aria.download(getContext()).load(entity.getId()).cancel(true);
break;
}
}
@@ -291,32 +295,35 @@ public class DownloadAdapter extends AbsRVAdapter<AbsEntity, DownloadAdapter.Sim
switch (entity.getTaskType()) {
case AbsTaskWrapper.D_FTP:
//Aria.download(getContext()).loadFtp((DownloadEntity) entity).login("lao", "123456").start();
Aria.download(getContext()).loadFtp((DownloadEntity) entity).charSet("GBK").start();
Aria.download(getContext()).loadFtp(entity.getKey()).start();
break;
case AbsTaskWrapper.D_FTP_DIR:
break;
case AbsTaskWrapper.D_HTTP:
Aria.download(getContext()).load((DownloadEntity) entity).start();
Aria.download(getContext()).load(entity.getKey()).start();
break;
case AbsTaskWrapper.DG_HTTP:
Aria.download(getContext()).loadGroup((DownloadGroupEntity) entity).start();
Aria.download(getContext()).loadGroup(((DownloadGroupEntity) entity).getUrls()).start();
break;
}
}
private void stop(AbsEntity entity) {
if (!AppUtil.chekEntityValid(entity)) {
return;
}
switch (entity.getTaskType()) {
case AbsTaskWrapper.D_FTP:
//Aria.download(getContext()).loadFtp((DownloadEntity) entity).login("lao", "123456").stop();
Aria.download(getContext()).loadFtp((DownloadEntity) entity).charSet("GBK").stop();
Aria.download(getContext()).loadFtp(entity.getId()).stop();
break;
case AbsTaskWrapper.D_FTP_DIR:
break;
case AbsTaskWrapper.D_HTTP:
Aria.download(getContext()).load((DownloadEntity) entity).stop();
Aria.download(getContext()).load(entity.getId()).stop();
break;
case AbsTaskWrapper.DG_HTTP:
Aria.download(getContext()).loadGroup((DownloadGroupEntity) entity).stop();
Aria.download(getContext()).loadGroup(entity.getId()).stop();
break;
}
}

View File

@@ -1,91 +0,0 @@
package com.arialyy.simple.core.test;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import com.arialyy.annotations.Download;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.download.DownloadTask;
import com.arialyy.aria.util.CommonUtil;
import com.arialyy.simple.R;
import com.arialyy.simple.base.BaseActivity;
import com.arialyy.simple.databinding.ActivityTestBinding;
import java.io.File;
/**
* Created by lyy on 2019/5/28.
* Ftp 下载
* <a href="https://aria.laoyuyu.me/aria_doc/">文档</>
*/
public class TestFTPActivity extends BaseActivity<ActivityTestBinding> {
String TAG = "TestFTPActivity";
private final String URL = "ftp://192.168.1.3:21/download//AriaPrj.rar";
private final String FILE_PATH = "/mnt/sdcard/AriaPrj.rar";
@Override protected int setLayoutId() {
return R.layout.activity_test;
}
@Override protected void init(Bundle savedInstanceState) {
super.init(savedInstanceState);
mBar.setVisibility(View.GONE);
Aria.download(this).register();
}
@Download.onWait void onWait(DownloadTask task) {
Log.d(TAG, "wait ==> " + task.getEntity().getFileName());
}
@Download.onPre protected void onPre(DownloadTask task) {
Log.d(TAG, "onPre");
}
@Download.onTaskStart void taskStart(DownloadTask task) {
Log.d(TAG, "onStart");
}
@Download.onTaskRunning protected void running(DownloadTask task) {
Log.d(TAG, "runningspeed=" + task.getConvertSpeed());
}
@Download.onTaskResume void taskResume(DownloadTask task) {
Log.d(TAG, "resume");
}
@Download.onTaskStop void taskStop(DownloadTask task) {
Log.d(TAG, "stop");
}
@Download.onTaskCancel void taskCancel(DownloadTask task) {
Log.d(TAG, "cancel");
}
@Download.onTaskFail void taskFail(DownloadTask task) {
Log.d(TAG, "fail");
}
@Download.onTaskComplete void taskComplete(DownloadTask task) {
Log.d(TAG, "complete, md5 => " + CommonUtil.getFileMD5(new File(task.getKey())));
}
public void onClick(View view) {
switch (view.getId()) {
case R.id.start:
Aria.download(this)
.loadFtp(URL)
.setFilePath(FILE_PATH)
.login("lao", "123456")
//.asFtps() // ftps 配置
//.setStorePath("/mnt/sdcard/Download/server.crt") //设置证书路径
// .setAlias("www.laoyuyu.me") // 设置证书别名
.start();
break;
case R.id.stop:
Aria.download(this).loadFtp(FILE_PATH).stop();
break;
case R.id.cancel:
Aria.download(this).loadFtp(FILE_PATH).cancel();
break;
}
}
}

View File

@@ -1,104 +0,0 @@
package com.arialyy.simple.core.test;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import com.arialyy.annotations.DownloadGroup;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.download.DownloadGroupTask;
import com.arialyy.frame.util.show.L;
import com.arialyy.simple.R;
import com.arialyy.simple.base.BaseActivity;
import com.arialyy.simple.databinding.ActivityTestBinding;
import com.arialyy.simple.core.download.group.GroupModule;
import java.util.List;
/**
* Created by Administrator on 2018/4/12.
*/
public class TestFTPDirActivity extends BaseActivity<ActivityTestBinding> {
List<String> mUrls;
private static final String dir = "ftps://192.168.29.140:990/upload/测试";
@Override protected int setLayoutId() {
return R.layout.activity_test;
}
@Override protected void init(Bundle savedInstanceState) {
super.init(savedInstanceState);
mBar.setVisibility(View.GONE);
Aria.download(this).register();
mUrls = getModule(GroupModule.class).getUrls();
}
@DownloadGroup.onWait void taskWait(DownloadGroupTask task) {
L.d(TAG, task.getTaskName() + "wait");
}
@DownloadGroup.onPre() protected void onPre(DownloadGroupTask task) {
L.d(TAG, "group pre");
}
@DownloadGroup.onTaskPre() protected void onTaskPre(DownloadGroupTask task) {
L.d(TAG, "group task pre");
}
@DownloadGroup.onTaskStart() void taskStart(DownloadGroupTask task) {
L.d(TAG, "group task start");
}
@DownloadGroup.onTaskRunning() protected void running(DownloadGroupTask task) {
L.d(TAG, "group task running");
}
@DownloadGroup.onTaskResume() void taskResume(DownloadGroupTask task) {
L.d(TAG, "group task resume");
}
@DownloadGroup.onTaskStop() void taskStop(DownloadGroupTask task) {
L.d(TAG, "group task stop");
}
@DownloadGroup.onTaskCancel() void taskCancel(DownloadGroupTask task) {
L.d(TAG, "group task cancel");
}
@DownloadGroup.onTaskFail() void taskFail(DownloadGroupTask task) {
L.d(TAG, "group task fail");
}
@DownloadGroup.onTaskComplete() void taskComplete(DownloadGroupTask task) {
L.d(TAG, "group task complete");
}
public void onClick(View view) {
switch (view.getId()) {
case R.id.start:
//Aria.download(this)
// .loadGroup(mUrls)
// .setDirPath(Environment.getExternalStorageDirectory().getPath() + "/download/test/")
// .resetState()
// .start();
Aria.download(this)
.loadFtpDir(dir)
.setDirPath(
Environment.getExternalStorageDirectory().getPath() + "/Download/ftp_dir")
.setGroupAlias("ftp文件夹下载")
//.setSubTaskFileName(getModule(GroupModule.class).getSubName())
.login("lao", "123456")
.asFtps()
.setStorePath("/mnt/sdcard/Download/server.crt")
.setAlias("www.laoyuyu.me")
.setStorePass("123456")
.start();
break;
case R.id.stop:
Aria.download(this).loadFtpDir(dir).stop();
break;
case R.id.cancel:
Aria.download(this).loadFtpDir(dir).cancel();
break;
}
}
}

View File

@@ -1,80 +0,0 @@
package com.arialyy.simple.core.test;
import android.os.Environment;
import android.view.View;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.common.QueueMod;
import com.arialyy.simple.R;
import com.arialyy.simple.base.BaseActivity;
import com.arialyy.simple.databinding.TestActivityMultiBinding;
/**
* Created by AriaL on 2017/6/15.
*/
public class TestMutilTaskSysDownload extends BaseActivity<TestActivityMultiBinding> {
@Override protected int setLayoutId() {
return R.layout.test_activity_multi;
}
public void onClick(View view) {
String baseUrl = "http://file.bmob.cn/";
String[] urlArray = {
"M02/3B/A4/oYYBAFaOeUSAc1QiAAFTbmA7AHs052.jpg",
"M02/3B/A4/oYYBAFaOeUaAfYC-AAFD8zf9NXc879.jpg",
"M02/3B/A4/oYYBAFaOeUuAOxhnAACSdmbqSac702.jpg",
"M02/3B/A4/oYYBAFaOeU2AFAIGAAFICximvXc924.jpg",
"M02/3B/A4/oYYBAFaOeVCAPWMQAAFm2KWCq_E721.jpg",
"M02/3B/A4/oYYBAFaOeVOAbiv9AAFfCTTgr94948.jpg",
"M02/3B/A4/oYYBAFaOeVaAMR3tAAFf3yTuuCM577.jpg",
"M02/3B/A4/oYYBAFaOeVmACEWhAAEt72ecbpg468.jpg",
"M02/3B/A4/oYYBAFaOeVyAHHt4AAFg9e9bRio507.jpg",
"M02/3B/A4/oYYBAFaOeV-AClYXAAESLGY0gag424.jpg",
"M02/3B/A4/oYYBAFaOeWKAA7N0AAF3omYOJUI703.jpg",
"M02/3B/A4/oYYBAFaOeWWAD2lrAAFN7eRFxBs575.jpg",
"M02/3B/A4/oYYBAFaOeWiAdCVEAAFg4273Dus313.jpg",
"M02/3B/A4/oYYBAFaOeWyAJDm5AAF8JVoGVb0705.jpg",
"M02/3B/A4/oYYBAFaOeW-AUoA8AAGjKiHkXUo181.jpg",
"M02/3B/A4/oYYBAFaOeXKABIamAAFU7J7vraE265.jpg",
"M02/3B/A5/oYYBAFaOeXaAW09jAAFf37qdwDA457.jpg",
"M02/3B/A5/oYYBAFaOeXmAWmS7AAFtLNpWjgo967.jpg",
"M02/3B/A5/oYYBAFaOeX2AQf9cAAF2fhwS2UE145.jpg",
"M02/3B/A5/oYYBAFaOeYCAKGnLAAFVAzks-qU937.jpg",
"M02/3B/A5/oYYBAFaOeYOAMODNAAF6HjTTMq4819.jpg",
"M02/3B/A5/oYYBAFaOeYeAbn8uAAFLSQLw48Q042.jpg",
"M02/3B/A5/oYYBAFaOeYqAMJThAAFtrNe4UNM047.jpg",
"M02/3B/A5/oYYBAFaOeY2AbnQvAAFNSXWn0Dc026.jpg",
"M02/3B/A5/oYYBAFaOeZCAIsr0AAFHZFEVhPc682.jpg",
"M02/3B/A5/oYYBAFaOeZOAGvITAAFqPmfcc9c471.jpg",
"M02/3B/A5/oYYBAFaOeZaATvjbAAFHDmALnhE003.jpg",
"M02/3B/A5/oYYBAFaOeZmAJPuVAAFfPJC2wsE319.jpg",
"M02/3B/A5/oYYBAFaOeZyAXtAmAAFfArJNwtM371.jpg",
"M02/3B/A5/oYYBAFaOeZ-AGZN0AAFgqwYYCS8004.jpg",
"M02/3B/A5/oYYBAFaOeaOAbbrGAAFcq59JjUo205.jpg",
"M02/3B/A5/oYYBAFaOeaSAdFyoAACaxVxgUJA092.jpg"
};
int maxNum = Aria.get(this).getDownloadConfig().getMaxTaskNum();
Aria.get(this).setDownloadQueueMod(QueueMod.NOW);
for (int i = 0; i < urlArray.length; i++) {
Aria.download(this)
.load(baseUrl + urlArray[i])
.setFilePath(Environment.getExternalStorageDirectory() + "/test/" + i + ".jpg")
//.addHeader("Accept-Encoding", "gzip,deflate,sdcn")
.start();
//if (i < maxNum) {
// Aria.download(this)
// .load(baseUrl + urlArray[i])
// .setDownloadPath(Environment.getExternalStorageDirectory() + "/test/" + i + ".jpg")
// //.addHeader("Accept-Encoding", "gzip,deflate,sdcn")
// .start();
//} else {
// Aria.download(this)
// .load(baseUrl + urlArray[i])
// .setDownloadPath(Environment.getExternalStorageDirectory() + "/test/" + i + ".jpg")
// //.addHeader("Accept-Encoding", "gzip,deflate,sdcn")
// .add();
//}
}
}
}

View File

@@ -16,6 +16,7 @@
package com.arialyy.simple.core.upload;
import android.arch.lifecycle.Observer;
import android.arch.lifecycle.ViewModelProviders;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
@@ -24,8 +25,10 @@ import android.util.Log;
import android.view.View;
import com.arialyy.annotations.Upload;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.common.controller.ControllerType;
import com.arialyy.aria.core.common.ftp.FtpInterceptHandler;
import com.arialyy.aria.core.common.ftp.IFtpUploadInterceptor;
import com.arialyy.aria.core.inf.IEntity;
import com.arialyy.aria.core.upload.UploadEntity;
import com.arialyy.aria.core.upload.UploadTask;
import com.arialyy.aria.util.ALog;
@@ -40,7 +43,6 @@ import com.arialyy.simple.util.AppUtil;
import java.io.File;
import java.io.IOException;
import java.util.List;
import android.arch.lifecycle.ViewModelProviders;
/**
* Created by lyy on 2017/7/28. Ftp 文件上传demo
@@ -50,6 +52,7 @@ public class FtpUploadActivity extends BaseActivity<ActivityFtpUploadBinding> {
private String mFilePath;
private String mUrl;
private UploadModule mModule;
private UploadEntity mEntity;
@Override protected void init(Bundle savedInstanceState) {
setTile("D_FTP 文件上传");
@@ -64,6 +67,7 @@ public class FtpUploadActivity extends BaseActivity<ActivityFtpUploadBinding> {
mModule = ViewModelProviders.of(this).get(UploadModule.class);
mModule.getFtpInfo(this).observe(this, new Observer<UploadEntity>() {
@Override public void onChanged(@Nullable UploadEntity entity) {
mEntity = entity;
if (entity != null) {
if (entity.getFileSize() != 0) {
getBinding().setFileSize(CommonUtil.formatFileSize(entity.getFileSize()));
@@ -74,6 +78,10 @@ public class FtpUploadActivity extends BaseActivity<ActivityFtpUploadBinding> {
getBinding().setFilePath(entity.getFilePath());
mUrl = entity.getUrl();
mFilePath = entity.getFilePath();
getBinding().setStateStr(getString(
entity.getState() == IEntity.STATE_RUNNING ? R.string.stop : R.string.resume));
} else {
getBinding().setStateStr(getString(R.string.resume));
}
}
});
@@ -105,11 +113,7 @@ public class FtpUploadActivity extends BaseActivity<ActivityFtpUploadBinding> {
public void onClick(View view) {
switch (view.getId()) {
case R.id.start:
if (Aria.upload(this).load(mFilePath).isRunning()) {
Aria.upload(this).loadFtp(mFilePath).stop();
getBinding().setStateStr(getString(R.string.resume));
} else {
getBinding().setStateStr(getString(R.string.stop));
if (!AppUtil.chekEntityValid(mEntity)) {
Aria.upload(this).loadFtp(mFilePath).setUploadUrl(mUrl).setUploadInterceptor(
new IFtpUploadInterceptor() {
@@ -121,13 +125,26 @@ public class FtpUploadActivity extends BaseActivity<ActivityFtpUploadBinding> {
return builder.build();
}
})
//.login("lao", "123456")
.option()
.login("N0rI", "0qcK")
.controller(ControllerType.START_CONTROLLER)
.start();
getBinding().setStateStr(getString(R.string.stop));
break;
}
if (Aria.download(this).loadFtp(mEntity.getId()).isRunning()) {
Aria.download(this).loadFtp(mEntity.getId()).stop();
getBinding().setStateStr(getString(R.string.resume));
} else {
Aria.download(this).loadFtp(mEntity.getId()).resume();
getBinding().setStateStr(getString(R.string.stop));
}
break;
case R.id.cancel:
Aria.upload(this).loadFtp(mFilePath).cancel();
if (AppUtil.chekEntityValid(mEntity)) {
Aria.upload(this).loadFtp(mEntity.getId()).cancel();
}
break;
}
}

View File

@@ -20,12 +20,14 @@ import android.os.Bundle;
import android.view.View;
import com.arialyy.annotations.Upload;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.upload.UploadEntity;
import com.arialyy.aria.core.upload.UploadTask;
import com.arialyy.frame.util.FileUtil;
import com.arialyy.frame.util.show.L;
import com.arialyy.simple.R;
import com.arialyy.simple.base.BaseActivity;
import com.arialyy.simple.databinding.ActivityUploadBinding;
import com.arialyy.simple.util.AppUtil;
import com.arialyy.simple.widget.HorizontalProgressBarWithNumber;
import java.io.File;
@@ -36,7 +38,8 @@ public class HttpUploadActivity extends BaseActivity<ActivityUploadBinding> {
private static final String TAG = "HttpUploadActivity";
HorizontalProgressBarWithNumber mPb;
private static final String FILE_PATH = "/mnt/sdcard/test.apk";
private final String FILE_PATH = "/mnt/sdcard/test.apk";
private UploadEntity mEntity;
@Override protected int setLayoutId() {
return R.layout.activity_upload;
@@ -45,6 +48,9 @@ public class HttpUploadActivity extends BaseActivity<ActivityUploadBinding> {
@Override protected void init(Bundle savedInstanceState) {
setTile("D_HTTP 上传");
super.init(savedInstanceState);
mEntity = Aria.upload(this).getFirstUploadEntity(FILE_PATH);
Aria.upload(this).register();
getBinding().upload.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
@@ -70,16 +76,19 @@ public class HttpUploadActivity extends BaseActivity<ActivityUploadBinding> {
"http://lib-test.xzxyun.com:8042/Api/upload?data={\"type\":\"1\",\"fileType\":\".apk\"}")
//.setTempUrl("http://192.168.1.6:8080/upload/sign_file/").setAttachment("file")
//.addHeader("iplanetdirectorypro", "11a09102fb934ad0bc206f9c611d7933")
.asPost()
.start();
}
void stop() {
Aria.upload(this).load(FILE_PATH).cancel();
if (AppUtil.chekEntityValid(mEntity)) {
Aria.upload(this).load(mEntity.getId()).stop();
}
}
void remove() {
Aria.upload(this).load(FILE_PATH).cancel();
if (AppUtil.chekEntityValid(mEntity)) {
Aria.upload(this).load(mEntity.getId()).cancel();
}
}
@Upload.onPre public void onPre(UploadTask task) {

View File

@@ -39,7 +39,7 @@ public class UploadModule extends BaseViewModule {
String filePath = AppUtil.getConfigValue(context, FTP_PATH_KEY,
Environment.getExternalStorageDirectory().getPath() + "/AriaPrj.rar");
UploadEntity entity = Aria.upload(context).getUploadEntity(filePath);
UploadEntity entity = Aria.upload(context).getFirstUploadEntity(filePath);
if (entity != null) {
uploadInfo = entity;
AppUtil.setConfigValue(context, FTP_URL_KEY, uploadInfo.getUrl());

View File

@@ -20,9 +20,12 @@ import android.os.Environment;
import android.util.Log;
import com.arialyy.annotations.Download;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.common.controller.ControllerType;
import com.arialyy.aria.core.download.DownloadEntity;
import com.arialyy.aria.core.download.DownloadTask;
import com.arialyy.aria.util.CommonUtil;
import com.arialyy.frame.util.show.L;
import com.arialyy.simple.util.AppUtil;
import java.io.File;
/**
@@ -33,6 +36,7 @@ public class AnyRunnModule {
String TAG = "AnyRunnModule";
private Context mContext;
private String mUrl;
private DownloadEntity mEntity;
public AnyRunnModule(Context context) {
Aria.download(this).register();
@@ -78,33 +82,54 @@ public class AnyRunnModule {
public void start(String url) {
mUrl = url;
String path = Environment.getExternalStorageDirectory().getPath() + "/mmm2.mp4";
Aria.download(this)
.load(url)
.setFilePath(path)
.resetState()
.start();
if (mEntity == null) {
mEntity = Aria.download(this).getFirstDownloadEntity(url);
}
if (!AppUtil.chekEntityValid(mEntity)) {
String path = Environment.getExternalStorageDirectory().getPath() + "/mmm2.mp4";
Aria.download(this)
.load(url)
.setFilePath(path)
.resetState()
.start();
} else {
Aria.download(this).load(mEntity.getId()).resume();
}
}
public void startFtp(String url) {
mUrl = url;
Aria.download(this)
.loadFtp(url)
.login("lao", "123456")
.setFilePath(Environment.getExternalStorageDirectory().getPath() + "/Download/")
.asFtps()
.setStorePath("/mnt/sdcard/Download/server.crt")
.setAlias("www.laoyuyu.me")
.setStorePass("123456")
.start();
if (mEntity == null) {
mEntity = Aria.download(this).getFirstDownloadEntity(url);
}
if (!AppUtil.chekEntityValid(mEntity)) {
Aria.download(this)
.loadFtp(url)
.setFilePath(Environment.getExternalStorageDirectory().getPath() + "/Download/")
.option()
.asFtps()
.setStorePath("/mnt/sdcard/Download/server.crt")
.setAlias("www.laoyuyu.me")
.setStorePass("123456")
.controller(ControllerType.START_CONTROLLER)
.start();
} else {
Aria.download(this).load(mEntity.getId()).resume();
}
}
public void stop(String url) {
Aria.download(this).load(url).stop();
if (AppUtil.chekEntityValid(mEntity)) {
Aria.download(this).load(mEntity.getId()).stop();
}
}
public void cancel(String url) {
Aria.download(this).load(url).cancel();
if (AppUtil.chekEntityValid(mEntity)) {
Aria.download(this).load(mEntity.getId()).cancel();
}
}
public void unRegister() {

View File

@@ -24,6 +24,7 @@ import android.net.Uri;
import android.os.Build;
import android.support.v4.content.FileProvider;
import android.text.TextUtils;
import com.arialyy.aria.core.inf.AbsEntity;
import com.arialyy.aria.util.ALog;
import com.arialyy.aria.util.CommonUtil;
import com.arialyy.simple.BuildConfig;
@@ -34,6 +35,15 @@ public class AppUtil {
private static final String TAG = "AppUtil";
private static final String ARIA_SHARE_PRE_KEY = "ARIA_SHARE_PRE_KEY";
/**
* 检查实体是否有效
*
* @return true 实体有效
*/
public static boolean chekEntityValid(AbsEntity entity) {
return entity != null && entity.getId() != -1;
}
/**
* http下载示例代码
*/

View File

@@ -55,15 +55,6 @@
style="?buttonBarButtonStyle"
/>
<Button
android:id="@+id/stop"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="onClick"
android:text="暂停"
style="?buttonBarButtonStyle"
/>
<Button
android:id="@+id/cancel"

View File

@@ -15,6 +15,11 @@
name="progress"
type="int"
/>
<variable
name="stateStr"
type="String"
/>
</data>
<LinearLayout
android:layout_width="match_parent"
@@ -23,10 +28,11 @@
>
<include
layout="@layout/content_single"
layout="@layout/layout_content_single"
bind:fileSize="@{fileSize}"
bind:progress="@{progress}"
bind:speed="@{speed}"
bind:stateStr="@{stateStr}"
/>
</LinearLayout>

View File

@@ -16,6 +16,10 @@
name="progress"
type="int"
/>
<variable
name="stateStr"
type="String"
/>
</data>
<LinearLayout
@@ -30,10 +34,11 @@
/>
<include
layout="@layout/content_single"
layout="@layout/layout_content_single"
bind:fileSize="@{fileSize}"
bind:progress="@{progress}"
bind:speed="@{speed}"
bind:stateStr="@{stateStr}"
/>
</LinearLayout>

View File

@@ -1,22 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<include layout="@layout/layout_bar"/>
<Button
android:onClick="onClick"
android:id="@+id/download"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="多任务同时下载"
style="?buttonBarButtonStyle"
/>
</LinearLayout>
</layout>