Aria是一个多任务下载库,他可以http下载任务也可以FTP下载任务,多任务打包合并下载,上传也支持了,还可以支持m3u8送文件下载,类似于UC的网页视频下载,变下还能边播放,牛皮了。
文档地址,很详细哦,要用的话建议先看看能不能满足自己的需求。
https://aria.laoyuyu.me/aria_doc/
引入库:
implementation 'com.arialyy.aria:core:3.7.9'
annotationProcessor 'com.arialyy.aria:compiler:3.7.9'
# 如果需要使用ftp,请增加该组件
implementation 'com.arialyy.aria:ftpComponent:3.7.9'
# 如果需要使用m3u8下载功能,请增加该组件
implementation 'com.arialyy.aria:m3u8Component:3.7.9'
如果出现android support依赖错误,请将
compile 'com.arialyy.aria:core:<last-version>'
替换为
api('com.arialyy.aria:core:<last-version>'){
exclude group: 'androidx.appcompat.app'
}
如果你使用的是kotlin,请使用kotlin官方提供的方法配置apt:https://www.kotlincn.net/docs/reference/kapt.html
注:3.7 以上版本已经适配了AndroidX,如果是使用support库的,可使用老版本
使用
清单文件注册权限
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
注册aria
在Activity的onCreate、fragment的onCreate、java的构造函数中使用Aria.download(this).register();便可以实现注册。 如在activity中:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Aria.download(this).register();
}
创建任务
创建并启动一个下载任务,创建任务完成后,可获取到该任务的id。
long taskId = Aria.download(this)
.load(DOWNLOAD_URL) //读取下载地址
.setFilePath(DOWNLOAD_PATH) //设置文件保存的完整路径
.create(); //启动下载
停止\恢复任务
使用通过创建任务获取的任务id,可对任务进行停止、恢复等操作
Aria.download(this)
.load(taskId)
.stop();
//.resume();
接受任务回调
基于解耦合的考虑,Aria的下载功能是和状态获取相分离的,状态的获取并不会集成到链式代码中,但是Aria提供了另一种更简单更灵活的方案。 通过注解,你可以很容易获取任务的所有状态。
//在这里处理任务执行中的状态,如进度进度条的刷新
@Download.onTaskRunning protected void running(DownloadTask task) {
if(task.getKey().eques(url)){
....
可以通过url判断是否是指定任务的回调
}
int p = task.getPercent(); //任务进度百分比
String speed = task.getConvertSpeed(); //转换单位后的下载速度,单位转换需要在配置文件中打开
String speed1 = task.getSpeed(); //原始byte长度速度
}
@Download.onTaskComplete void taskComplete(DownloadTask task) {
//在这里处理任务完成的状态
}
网友评论