Merge branch 'v_3.0' of https://github.com/AriaLyy/Aria into v_3.0

pull/330/head
AriaLyy 8 years ago
commit 9b2e2eb231
  1. 2
      .idea/modules.xml
  2. 4
      Aria/build.gradle
  3. 24
      Aria/src/main/java/com/arialyy/aria/core/AriaManager.java
  4. 56
      Aria/src/main/java/com/arialyy/aria/core/download/DownloadTask.java
  5. 13
      Aria/src/main/java/com/arialyy/aria/core/inf/ITask.java
  6. 56
      Aria/src/main/java/com/arialyy/aria/core/upload/UploadTask.java
  7. 42
      README.md
  8. 2
      app/src/main/java/com/arialyy/simple/download/DownloadDialog.java
  9. 2
      app/src/main/java/com/arialyy/simple/download/DownloadPopupWindow.java
  10. 3
      app/src/main/java/com/arialyy/simple/download/fragment_download/DownloadFragment.java
  11. 6
      app/src/main/java/com/arialyy/simple/download/service_download/DownloadService.java

@ -2,8 +2,8 @@
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/Aria.iml" filepath="$PROJECT_DIR$/Aria.iml" />
<module fileurl="file://$PROJECT_DIR$/Aria/Aria.iml" filepath="$PROJECT_DIR$/Aria/Aria.iml" />
<module fileurl="file://$PROJECT_DIR$/Aria.iml" filepath="$PROJECT_DIR$/Aria.iml" />
<module fileurl="file://$PROJECT_DIR$/Aria/Aria-Aria.iml" filepath="$PROJECT_DIR$/Aria/Aria-Aria.iml" />
<module fileurl="file://$PROJECT_DIR$/AriaPrj.iml" filepath="$PROJECT_DIR$/AriaPrj.iml" />
<module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />

@ -7,8 +7,8 @@ android {
defaultConfig {
minSdkVersion 9
targetSdkVersion 23
versionCode 102
versionName "3.0.3"
versionCode 311
versionName "3.1.1"
}
buildTypes {
release {

@ -93,16 +93,18 @@ import org.xml.sax.SAXException;
SAXParser parser = factory.newSAXParser();
parser.parse(APP.getAssets().open("aria_config.xml"), helper);
} catch (ParserConfigurationException | IOException | SAXException e) {
Log.d(TAG, e.toString());
Log.e(TAG, e.toString());
}
}
/**
* 如果需要在代码中修改下载配置请使用以下方法
*
* @<code> //修改最大任务队列数
* Aria.get(this).getDownloadConfig().setMaxTaskNum(3);
* </code>
* <pre>
* <code>
* //修改最大任务队列数
* Aria.get(this).getDownloadConfig().setMaxTaskNum(3);
* </code>
* </pre>
*/
public Configuration.DownloadConfig getDownloadConfig() {
return mDConfig;
@ -110,10 +112,12 @@ import org.xml.sax.SAXException;
/**
* 如果需要在代码中修改下载配置请使用以下方法
*
* @<code> //修改最大任务队列数
* Aria.get(this).getUploadConfig().setMaxTaskNum(3);
* </code>
* <pre>
* <code>
* //修改最大任务队列数
* Aria.get(this).getUploadConfig().setMaxTaskNum(3);
* </code>
* </pre>
*/
public Configuration.UploadConfig getUploadConfig() {
return mUConfig;
@ -242,8 +246,6 @@ import org.xml.sax.SAXException;
* 初始化配置文件
*/
private void initConfig() {
//File dFile = new File(APP.getFilesDir().getPath() + Configuration.DOWNLOAD_CONFIG_FILE);
//File uFile = new File(APP.getFilesDir().getPath() + Configuration.UPLOAD_CONFIG_FILE);
File xmlFile = new File(APP.getFilesDir().getPath() + Configuration.XML_FILE);
if (!xmlFile.exists()) {
loadConfig();

@ -56,13 +56,17 @@ public class DownloadTask implements ITask {
/**
* @return 返回原始byte速度需要你在配置文件中配置
* <pre>
* <download>
* ...
* <convertSpeed value="false"/>
* </download>
* {@code
* <xml>
* <download>
* ...
* <convertSpeed value="false"/>
* </download>
*
* 或在代码中设置
* Aria.get(this).getDownloadConfig().setConvertSpeed(false);
* 或在代码中设置
* Aria.get(this).getDownloadConfig().setConvertSpeed(false);
* </xml>
* }
* </pre>
* 才能生效
*/
@ -73,13 +77,17 @@ public class DownloadTask implements ITask {
/**
* @return 返回转换单位后的速度需要你在配置文件中配置转换完成后为1b/s1k/s1m/s1g/s1t/s
* <pre>
* <download>
* ...
* <convertSpeed value="true"/>
* </download>
* {@code
* <xml>
* <download>
* ...
* <convertSpeed value="true"/>
* </download>
*
* 或在代码中设置
* Aria.get(this).getDownloadConfig().setConvertSpeed(true);
* 或在代码中设置
* Aria.get(this).getDownloadConfig().setConvertSpeed(true);
* </xml>
* }
* </pre>
* 才能生效
*/
@ -87,6 +95,18 @@ public class DownloadTask implements ITask {
return mEntity.getConvertSpeed();
}
/**
* 获取百分比进度
*
* @return 返回百分比进度如果文件长度为0返回0
*/
@Override public int getPercent() {
if (mEntity.getFileSize() == 0) {
return 0;
}
return (int) (mEntity.getCurrentProgress() * 100 / mEntity.getFileSize());
}
/**
* 获取文件大小
*/
@ -94,6 +114,18 @@ public class DownloadTask implements ITask {
return mEntity.getFileSize();
}
/**
* 转换单位后的文件长度
*
* @return 如果文件长度为0则返回0m否则返回转换后的长度1b1k1m1g1t
*/
@Override public String getConvertFileSize() {
if (mEntity.getFileSize() == 0) {
return "0m";
}
return CommonUtil.formatFileSize(mEntity.getFileSize());
}
/**
* 获取当前下载进度
*/

@ -54,8 +54,21 @@ public interface ITask {
*/
public String getConvertSpeed();
/**
* 获取百分比进度
*/
public int getPercent();
/**
* 原始文件byte长度
*/
public long getFileSize();
/**
* 转换单位后的文件长度
*/
public String getConvertFileSize();
public long getCurrentProgress();
public void setTargetName(String targetName);

@ -111,13 +111,17 @@ public class UploadTask implements ITask {
/**
* @return 返回原始byte速度需要你在配置文件中配置
* <pre>
* <upload>
* ...
* <convertSpeed value="false"/>
* </upload>
* {@code
* <xml>
* <upload>
* ...
* <convertSpeed value="false"/>
* </upload>
*
* 或在代码中设置
* Aria.get(this).getUploadConfig().setConvertSpeed(false);
* 或在代码中设置
* Aria.get(this).getUploadConfig().setConvertSpeed(false);
* </xml>
* }
* </pre>
* 才能生效
*/
@ -128,13 +132,17 @@ public class UploadTask implements ITask {
/**
* @return 返回转换单位后的速度需要你在配置文件中配置转换完成后为1b/s1k/s1m/s1g/s1t/s
* <pre>
* <upload>
* ...
* <convertSpeed value="true"/>
* </upload>
* {@code
* <xml>
* <upload>
* ...
* <convertSpeed value="true"/>
* </upload>
*
* 或在代码中设置
* Aria.get(this).getUploadConfig().setConvertSpeed(true);
* 或在代码中设置
* Aria.get(this).getUploadConfig().setConvertSpeed(true);
* </xml>
* }
* </pre>
*
* 才能生效
@ -143,6 +151,30 @@ public class UploadTask implements ITask {
return mUploadEntity.getConvertSpeed();
}
/**
* 获取百分比进度
*
* @return 返回百分比进度如果文件长度为0返回0
*/
@Override public int getPercent() {
if (mUploadEntity.getFileSize() == 0) {
return 0;
}
return (int) (mUploadEntity.getCurrentProgress() * 100 / mUploadEntity.getFileSize());
}
/**
* 转换单位后的文件长度
*
* @return 如果文件长度为0则返回0m否则返回转换后的长度1b1k1m1g1t
*/
@Override public String getConvertFileSize() {
if (mUploadEntity.getFileSize() == 0) {
return "0m";
}
return CommonUtil.formatFileSize(mUploadEntity.getFileSize());
}
@Override public long getFileSize() {
return mUploadEntity.getFileSize();
}

@ -4,14 +4,14 @@ Aria项目源于15年工作中遇到的一个文件下载管理的需求,当
Aria有以下特点:
+ 简单、方便
- 可以在Activity、Service、Fragment、Dialog、popupWindow、Notification等组件中使用
- 支持任务自动调度,使用者不需要关心任务状态切换的逻辑
- [通过Aria的事件,能很容易获取当前下载任务的下载状态](#二、下载状态获取)
- [一句代码就可以动态设置最大下载数](#通过代码修改Aria参数)
- [一句代码加可以获取当前的下载速度](#其它好用的API)
- [通过修改配置文件很容易就能修改下载线程数](#通过文件修改Aria配置参数)
- 可以在Activity、Service、Fragment、Dialog、popupWindow、Notification等组件中使用
- 支持任务自动调度,使用者不需要关心任务状态切换的逻辑
- [通过Aria的事件,能很容易获取当前下载任务的下载状态](#下载状态获取)
- [一句代码加可以获取当前的下载速度](#常用接口)
- [一句代码就可以动态设置最大下载数](#代码中设置参数)
- [通过修改配置文件很容易就能修改下载线程数](#配置文件设置参数)
+ 支持https地址下载
- 在配置文件中很容易就可以设置CA证书的信息
- 在配置文件中很容易就可以设置CA证书的信息
+ 支持300、301、302重定向下载链接下载
+ 支持上传操作
@ -25,7 +25,7 @@ Aria怎样使用?
## 下载
[![Download](https://api.bintray.com/packages/arialyy/maven/Aria/images/download.svg)](https://bintray.com/arialyy/maven/Aria/_latestVersion)</br>
```java
compile 'com.arialyy.aria:Aria:3.1.0'
compile 'com.arialyy.aria:Aria:3.1.1'
```
## 示例
@ -77,7 +77,7 @@ compile 'com.arialyy.aria:Aria:3.1.0'
Aria.download(this).load(DOWNLOAD_URL).cancel();
```
### 二、下载状态获取
### 下载状态获取
如果你希望读取下载进度或下载信息,那么你需要创建事件类,并在onResume(Activity、Fragment)或构造函数(Dialog、PopupWindow),将该事件类注册到Aria管理器。
* 创建事件类
@ -110,8 +110,8 @@ compile 'com.arialyy.aria:Aria:3.1.0'
}
```
### 三、Aria参数配置
#### 通过文件修改Aria配置参数
### Aria参数配置
#### 配置文件设置参数
创建`aria_config.xml`文件,将其放在`assets`目录下,添加以下内容
```xml
<?xml version="1.0" encoding="utf-8"?>
@ -172,7 +172,7 @@ compile 'com.arialyy.aria:Aria:3.1.0'
</aria>
```
#### 通过代码修改Aria参数
#### 代码中设置参数
除了文件方式外修改Aria参数外,同样的,你也可以在代码中动态修改Aria参数</br>
通过`Aria.get(this).getDownloadConfig()`或`Aria.get(this).getUploadConfig()`直接获取配置文件,然后修改参数</br>
如以下所示:
@ -182,7 +182,7 @@ compile 'com.arialyy.aria:Aria:3.1.0'
Aria.get(this).getDownloadConfig().setMaxTaskNum(3);
```
### 其它好用的API
### 常用接口
* 停止所有任务
```java
@ -194,7 +194,7 @@ Aria.download(this).stopAllTask();
Aria.download(this).removeAllTask();
```
* 获取当前任务的下载速度
速度参数有点特殊,需要[下载事件支持](#下载事件监听)
速度参数有点特殊,需要[下载事件支持](#下载状态获取)
``` java
@Override public void onTaskRunning(DownloadTask task) {
//如果你打开了速度单位转换配置,将可以通过以下方法获取带单位的下载速度,如:1 m/s
@ -203,6 +203,18 @@ Aria.download(this).removeAllTask();
long speed = task.getSpeed();
}
```
* 获取下载的文件大小、当前进度百分比
同样的,你也可以在DownloadTask对象中获取下载的文件大小
```
@Override public void onTaskRunning(DownloadTask task) {
 //获取文件大小
long fileSize = task.getFileSize();
//获取单位转换后的文件大小
String fileSize1 = task.getConvertFileSize();
//当前进度百分比
int percent = task.getPercent();
}
```
**tips:为了防止内存泄露的情况,事件类需要使用staic进行修饰**
@ -238,7 +250,7 @@ Aria.download(this).removeAllTask();
***
## 后续版本开发规划
* 实现上传队列调度功能
* ~~实现上传队列调度功能~~
## 开发日志
+ v_3.1.0 添加Aria配置文件,优化代码

@ -44,7 +44,7 @@ public class DownloadDialog extends AbsDialog {
@Bind(R.id.speed) TextView mSpeed;
private static final String DOWNLOAD_URL =
"http://static.gaoshouyou.com/d/3a/93/573ae1db9493a801c24bf66128b11e39.apk";
"http://clashroyalecdn.static.kunlun.com/Clash_Royale-1.2.6-kunlun_landing_page-release.apk.apk";
public DownloadDialog(Context context) {
super(context);

@ -131,7 +131,7 @@ public class DownloadPopupWindow extends AbsPopupWindow {
} else {
mPb.setProgress((int) ((current * 100) / len));
}
mSpeed.setText(CommonUtil.formatFileSize(task.getSpeed()) + "/s");
mSpeed.setText(task.getConvertSpeed());
}
}
}

@ -45,7 +45,7 @@ public class DownloadFragment extends AbsFragment<FragmentDownloadBinding> {
@Bind(R.id.speed) TextView mSpeed;
private static final String DOWNLOAD_URL =
"http://static.gaoshouyou.com/d/3a/93/573ae1db9493a801c24bf66128b11e39.apk";
"http://rs.0.gaoshouyou.com/d/90/d7/7490c6fd6cd733bef336e766778507c5.apk";
@Override protected void init(Bundle savedInstanceState) {
if (Aria.download(this).taskExists(DOWNLOAD_URL)) {
@ -74,7 +74,6 @@ public class DownloadFragment extends AbsFragment<FragmentDownloadBinding> {
Aria.download(this)
.load(DOWNLOAD_URL)
.setDownloadPath(Environment.getExternalStorageDirectory().getPath() + "/daialog.apk")
.setDownloadName("daialog.apk")
.start();
break;
case R.id.stop:

@ -31,11 +31,7 @@ import com.arialyy.frame.util.show.T;
public class DownloadService extends Service {
private static final String DOWNLOAD_URL =
//"http://kotlinlang.org/docs/kotlin-docs.pdf";
//"https://atom-installer.github.com/v1.13.0/AtomSetup.exe?s=1484074138&ext=.exe";
//"http://static.gaoshouyou.com/d/21/e8/61218d78d0e8b79df68dbc18dd484c97.apk";
//不支持断点的链接
"http://ox.konsung.net:5555/ksdc-web/download/downloadFile/?fileName=ksdc_1.0.2.apk&rRange=0-";
"http://rs.0.gaoshouyou.com/d/df/db/03df9eab61dbc48a5939f671f05f1cdf.apk";
private DownloadNotification mNotify;
@Nullable @Override public IBinder onBind(Intent intent) {

Loading…
Cancel
Save