一行代码实现Android文件下载

Android | 带你零代码实现安卓扫码功能 目录小序背景介绍前期准备开始搬运结语 小序   这是一篇纯新手教学,本人之前没有任何安卓开发经验(尴尬),本文也不涉及任何代码就可以使用一个扫码demo,华为scankit真是新手的福音…… 背景介绍   最近被导师要求做一个购物收费的app,毕设好难呀~ 网上找了半天全是zxing,但是扫码效果真是有点小垃圾,无奈只能继续寻寻觅觅……突然发现网上有篇讲集成hms的文章,稍微借鉴了一下。由于在下... 阅读详情

Aria

图标
Aria项目源于15年工作中遇到的一个文件下载管理的需求,当时被下载折磨的痛不欲生,从那时起便萌生了编写一个简单易用,稳当高效的下载框架,aria经历了1.0到3.0的开发,算是越来越接近当初所制定的目标了。

Aria有以下特点:

Aria怎样使用?

如果你觉得Aria对你有帮助,您的star和issues将是对我最大支持.^_^

下载

Download

compile 'com.arialyy.aria:Aria:3.1.3'

示例

多任务下载 上传

性能

性能展示


使用

由于Aria涉及到文件和网络的操作,因此需要你在manifest文件中添加以下权限

<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"/>

使用Aria进行下载

  • 添加任务(不进行下载),当其他下载任务完成时,将自动下载等待中的任务

    Aria.download(this)
        .load(DOWNLOAD_URL)
        .setDownloadPath(Environment.getExternalStorageDirectory().getPath() + "/test.apk")	//文件保存路径
        .add();
  • 下载

    Aria.download(this)
        .load(DOWNLOAD_URL)     //读取下载地址
        .setDownloadPath(Environment.getExternalStorageDirectory().getPath() + "/test.apk")    //设置文件保存的完整路径
        .start();   //启动下载
  • 暂停

    Aria.download(this).load(DOWNLOAD_URL).pause();
  • 恢复下载

    Aria.download(this).load(DOWNLOAD_URL).resume();
  • 取消下载

    Aria.download(this).load(DOWNLOAD_URL).cancel();

下载状态获取

如果你希望读取下载进度或下载信息,那么你需要创建事件类,并在onResume(Activity、Fragment)或构造函数(Dialog、PopupWindow),将该事件类注册到Aria管理器。

  • 创建事件类

    final static class MySchedulerListener extends Aria.DownloadSchedulerListener{
      @Override public void onTaskPre(DownloadTask task) {
        super.onTaskPre(task);
      }
    
      @Override public void onTaskStop(DownloadTask task) {
        super.onTaskStop(task);
      }
    
      @Override public void onTaskCancel(DownloadTask task) {
        super.onTaskCancel(task);
      }
    
      @Override public void onTaskRunning(DownloadTask task) {
        super.onTaskRunning(task);
      }
    }
  • 将事件注册到Aria

    @Override protected void onResume() {
      super.onResume();
      Aria.whit(this).addSchedulerListener(new MySchedulerListener());
    }

使用广播接收器接收Aria的任务下载状态

有的时候,你可能希望在广播中接收Aria的下载事件,那么你需要

Aria参数配置

配置文件设置参数

创建aria_config.xml文件,将其放在assets目录下,添加以下内容

<?xml version="1.0" encoding="utf-8"?>
<aria>

  <!--注意,修改该配置文件中的属性会覆盖代码中所设置的属性-->
  <download>

    <!--设置下载线程,线程下载数改变后,新的下载任务才会生效-->
    <threadNum value="4"/>

    <!--是否打开下载广播,默认为false-->
    <openBroadcast value="false"/>

    <!--设置下载队列最大任务数, 默认为2-->
    <maxTaskNum value="2"/>

    <!--设置下载失败,重试次数,默认为10-->
    <reTryNum value="10"/>

    <!--设置重试间隔,单位为毫秒,默认2000毫秒-->
    <reTryInterval value="2000"/>

    <!--设置url连接超时时间,单位为毫秒,默认5000毫秒-->
    <connectTimeOut value="5000"/>

    <!--设置IO流读取时间,单位为毫秒,默认20000毫秒,该时间不能少于10000毫秒-->
    <iOTimeOut value="20000"/>

    <!--设置写文件buff大小,该数值大小不能小于2048,数值变小,下载速度会变慢-->
    <buffSize value="8192"/>

    <!--设置https ca 证书信息;path 为assets目录下的CA证书完整路径,name 为CA证书名-->
    <ca name="" path=""/>

    <!--是否需要转换速度单位,转换完成后为:1b/s、1k/s、1m/s、1g/s、1t/s,如果不需要将返回byte长度-->
    <cnvertSpeed value="false"/>

  </download>

  <upload>
    <!--是否打开上传广播,默认为false-->
    <openBroadcast value="false"/>

    <!--设置上传队列最大任务数, 默认为2-->
    <maxTaskNum value="2"/>

    <!--设置上传失败,重试次数,默认为10-->
    <reTryNum value="10"/>

    <!--设置重试间隔,单位为毫秒-->
    <reTryInterval value="2000"/>

    <!--设置url连接超时时间,单位为毫秒,默认5000毫秒-->
    <connectTimeOut value="5000"/>
  </upload>

</aria>
代码中设置参数

除了文件方式外修改Aria参数外,同样的,你也可以在代码中动态修改Aria参数
通过Aria.get(this).getDownloadConfig()或Aria.get(this).getUploadConfig()直接获取配置文件,然后修改参数
如以下所示:

// 修改最大下载数,调用完成后,立即生效
// 如当前下载任务数是4,修改完成后,当前任务数会被Aria自动调度任务数
Aria.get(this).getDownloadConfig().setMaxTaskNum(3);

常用接口

  • 停止所有任务
Aria.download(this).stopAllTask();
  • 删除所有任务
Aria.download(this).removeAllTask();
@Override public void onTaskRunning(DownloadTask task) {
  //如果你打开了速度单位转换配置,将可以通过以下方法获取带单位的下载速度,如:1 m/s
  String convertSpeed = task.getConvertSpeed();
  //如果你有自己的单位格式,可以通过以下方法获取原始byte长度
  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进行修饰

上传

  • 添加任务(只添加,不上传)
Aria.upload(this)
    .load(filePath)     //文件路径
    .setUploadUrl(uploadUrl)  //上传路径
    .setAttachment(fileKey)   //服务器读取文件的key
    .add();
  • 上传
Aria.upload(this)
    .load(filePath)     //文件路径
    .setUploadUrl(uploadUrl)  //上传路径
    .setAttachment(fileKey)   //服务器读取文件的key
    .start();
  • 取消上传
Aria.upload(this).load(filePath).cancel();

混淆配置

-dontwarn com.arialyy.aria.**
-keep class com.arialyy.aria.**{*;}
github网址:https://github.com/AriaLyy/Aria
Android-Aria让Android中的文件下载变得很简单的下载框架 简单、方便可以在Activity、Service、Fragment、Dialog、popupWindow、Notification等组件中使用支持任务自动调度,使用者不需要关心任务状态切换的逻辑,通过Aria的事件,能很容易获取当前下载任务的下载状态。 立即下载

相关推荐

Android代码-强大的 Android 下载上传组件

Aria ENGLISH DOC 中文文档 Aria项目源于工作中遇到的一个文件下载管理的需求,当时被下载折磨的痛不欲生,从那时起便萌生了编写一个简单易用,稳当高效的下载框架,aria经历了1.0到3.0的开发,算是越来越接近当初所制定的目标了。 Aria有以下特点: 简单、方便 可以在Activity、Service、Fragment、Dialog、popupWindow、Notification等组件中使用 支持HTTPFTP断点续传、多任务自动调度 支持HTTP任务组FTP文件夹,断点续传下载 支持HTTP表单上传 支持文件FTP断点续传上传 支持FTPS/SFTP断点续传,see 支持https地址下载 在配置文件中很容易就可以设置CA证书的信息 支持多线程分块下载,能更有效的发挥机器IO性能 支持300、301、302重定向下载链接下载 下载支持文件长度动态增加,文件下载初始化时将不再占用过多的内存空间,见动态长度配置 怎样使用Aria? 如果你觉得Aria对你有帮助,您的star和issues将是对我最大支持.^_^ 示例 下载 compile 'c

Aria下载框架的使用方法

1.onCreate()方法中注册 2.下载回调方法,去更新进度条,和暂停、失败、下载、开始等状态 注意:自定义按钮状态,随着回调的状态改变自己的状态 此处暂停的回调方法,会在下载中失败了,重新下载;实际应用中此时状态还是应该是等待的状态; 此处刚关闭页面重新进来时,用框架给的状态也是不对的,当你本应是等待状态时,却还是...

yangaiyu的博客 4062

Android利用Http下载文件

NULL 博文链接:https://dampce032.iteye.com/blog/975642

java 快速框架下载_Aria:简单易用、高效的下载框架(Java)

Aria Aria项目源于15年工作中遇到的一个文件下载管理的需求,当时被下载折磨的痛不欲生,从那时起便萌生了编写一个简单易用,稳当高效的下载框架,aria经历了1.0到3.0的开发,算是越来越接近当初所制定的目标了。Aria有以下特点:简单、方便可以在Activity、Service、Fragment、Dialog、popupWindow、Notification等组件中使用支持任务自动调度,使...

weixin_28678151的博客 1022

Android 文件下载三种基本方式

主要介绍了Android 文件下载三种基本方式,非常不错具有参考借鉴价值,需要的朋友可以参考下

Kafka 系列 —(17)Kafka 流式处理:Kafka Streams架构、使用场景、框架选择

本文介绍了KafkaStreams的架构特点、应用场景及与其他流处理框架的比较。KafkaStreams作为嵌入式分布式流处理库,其核心架构包含流处理器、任务、拓扑和本地状态存储,具备自动容错和伸缩能力。适用于实时监控、ETL、聚合、Join、物化视图等低延迟场景。与Flink、Spark相比,KafkaStreams适合简单架构和微服务,而Flink适合大规模处理,Spark更适合批处理。选择框架需根据具体场景需求,如微服务推荐KafkaStreams,大规模处理推荐Flink。

moton2017的博客 1629

Aria的使用

Aria的使用 1、依赖: implementation 'com.arialyy.aria:core:3.8.15' annotationProcessor 'com.arialyy.aria:compiler:3.8.15' 2、权限 android 6.0以后,有可能需要动态开启权限 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <uses-permissio

qq_44309969的博客 2312

2023-ICCV-隐式神经网络实现低光照图像增强(NeRCo)论文解读+代码解析

NeRCo()提出了一种名为NeRCo的隐式神经表示方法,用于合作式低光图像增强。现有的低光图像增强方法存在以下三个限制:不可预测的亮度降低和噪声、度量友好版本和视觉友好版本之间的固有差距,以及有限的配对训练数据。为了解决这些限制,论文提出了NeRCo方法,它以无监督的方式稳健地恢复感知友好的结果。具体而言,NeRCo通过一个可控的拟合函数统一了现实场景中多样的退化因素,从而提高了鲁棒性。对于输出结果,论文引入了来自预训练视觉-语言模型的先验信息,采用语义导向的监督方法。

weixin_45595504的博客 3183

Android快速实现文件下载(只有4行代码)

本文为Marno原创 转载地址(http://www.jianshu.com/p/46fd1c253701) 写在前面的废话 下载文件,几乎是所有APP都会用到的功能!算了,还是不废话了,直接开写吧。。。 简单使用 完成一个下载任务只需要4行代码,什么断点续传,大文件下载,通知栏进度显示....都不需要你操心。 //创建下载任务,downloadUrl就是下载链接 Downlo

abbott_133的博客 1207

NVIDIA DGX Spark实战指南:从开箱到AI模型高效部署

本文详细介绍了NVIDIA DGX Spark的开箱体验、硬件架构及AI模型高效部署实战指南。从1 PetaFLOP算力的迷你设备到Grace Blackwell超级芯片的深度解析,再到五分钟快速上手指南和大模型部署技巧,帮助开发者充分利用这款全球最小AI超级计算机的性能优势。

weixin_29239279的博客 1363

Codev与Zemax相互转化

Codev与Zemax相互转化

weixin_72050316的博客 1043

android代码文件,一行代码实现android文件下载

起源本文主要介绍开源项目Aria的使用。Aria项目源于15年工作中遇到的一个文件下载管理的需求,当时被下载折磨的痛不欲生,从那时起便萌生了编写一个简单易用,稳当高效的下载框架,aria经历了1.0到3.0的开发,算是越来越接近当初所制定的目标了。以下为Aria的使用示例,使用Aria开发图片中的所有功能,只需要很短的时间,很少的代码。Aria示例编写布局文件android:layout_widt...

weixin_39902184的博客 270

Qt入门教程【数据类型篇】数值类型

Qt中的数值类型

小鱼酱的博客 1万+

一行代码实现android文件下载

起源本文主要介绍开源项目Aria的使用。Aria项目源于15年工作中遇到的一个文件下载管理的需求,当时被下载折磨的痛不欲生,从那时起便萌生了编写一个简单易用,稳当高效的下载框架,aria经历了1.0到3.0的开发,算是越来越接近当初所制定的目标了。 以下为Aria的使用示例,使用Aria开发图片中的所有功能,只需要很短的时间,很少的代码。 Aria示例 编写布局文件123456789101112...

贵公子丶笔记 745

基于 Verilog 的经典数字电路设计(10)三态门

三态门(Triple-State Gate)亦称 “三态输出门”、“三态门输出电路”,是一种重要的总线接口电路,具有高电平、低电平和高阻抗三种输出状态的门电路,不过我们通常在设计中比较少见。   三态指其输出既可以是一般二值逻辑电路,即正常的高电平(逻辑 1)或低电平(逻辑 0),又可以保持特有的高阻抗状态,高阻态相当于隔断状态(电阻很大,相当于开路)。

新芯设计的博客 1万+

手把手教你学SIMULINK模块库文件专栏-From Workspace 模块详解

模块是 Simulink 中的一个信号源模块,用于从 MATLAB 工作区加载数据作为输入信号。该模块允许用户将预先在 MATLAB 中生成的数据(如时间序列、矩阵或结构体)导入到 Simulink 模型中,从而实现更灵活的信号输入和仿真控制。通过深入了解其参数的影响及结合 MATLAB 脚本的应用,读者可以更加有效地利用这一模块进行仿真和研究。此外,通过实际应用场景的扩展以及常见问题解答部分的帮助,能够更好地掌握。模块是一个非常灵活的工具,适用于需要从 MATLAB 工作区加载数据的各种场景。

MHD0815的博客 631

AndroidPdfView一行代码快速显示pdf,支持线上下载与显示

一行代码快速实现PDF的在线下载与本地预览

编程小石头 2万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Android文件Apk下载变ZIP压缩包解决方案

        今天在泡论坛的时候,发现有网友说“APK文件下载之后变成了压缩包“,而斑竹或站长的回应一般都是”把后'*.zip'改成'*.apk'"“等。虽然 说这方法有效,但治标不治本,而且对用户的体验及其不好。今天,我带着大家从根本上来解决这个问题,下面我将演示下操作步骤,其它服务器软件(我这是 Nginx)设置也都大同小异。 打开 http://www.lingdus...

被妞追过的夏天 498

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Picasso——针对Android的一个强大的图像下载和缓存库

官方:http://square.github.io/picasso/ 简介 图片为安卓应用添加了必备内容和视觉风格。Picasso允许应用程序加载图片——往往只需一行代码! Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView); Picasso会自动处理安卓加载图片时出现的

gaoyong0624的专栏 514

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

《第一行代码(第2版)》下载示例适配android8.0加简易服务端实现apk自动下载

本人新手,入行不到三个月,项目需要实现app自动更新。于是就想到抄书上这个下载示例,结果公司现在的板子用的8.0系统,运行起来直接ANR,自己又写了一个简易spring boot服务端,一个星期左右才完成的差不多。(初步翻了一下第3版好像没这个示例了,话说第2版我都没看完,第3版又出来了)。 趁周日(翘加班)把可以分享的分享一下。 首先android8.0服务的正确打开方式变了: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

markren的博客 658

Android代码实现文件下载

import android.os.Environment; import androidx.annotation.NonNull; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; .

跟踪世界脚步 3178

android文件下载代码,Android代码实现文件下载

import android.os.Environment;import androidx.annotation.NonNull;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import okhttp3.Call;import ok...

weixin_42403922的博客 806

微信h5页面下载app —— 安卓直接下载apk文件包,IOS跳转AppStore的实现代码

需求:微信h5页面下载app —— 安卓直接下载apk文件包,IOS跳转AppStore 分析:微信不支持,在微信中屏蔽了apk文件的下载以及AppStore的跳转(且除非和TX有合作的应用,否则也不支持通过scheme跳转第三方app) 变通方法: 一、借助TX的应用市场 --‘应用宝’:将app上架应用宝,在微信中点击下载按钮(app的应用宝微下载地址),安卓则可跳转应用直接进...

wiuqt321的博客 895

Android studio第一行代码pdf 网盘下载

我整理的一些关于【状态图】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/bLN8S1Android Studio第一行代码:你的智能手机编程之旅 随着智能手机的普及,越来越多的开发者开始投身于Android应用开发。在这个过程中,Android Studio作为Google...

weixin_41266335的博客 178
上一篇: 自定义View笔记
下一篇: Retrofit的简单实用,配置okhttpclient
Android_Object
博客等级 码龄10年 1粉丝 14原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值