id功能修改
This commit is contained in:
@@ -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"/>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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("/");
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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, "running,speed=" + 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
//}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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下载示例代码
|
||||
*/
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user