文件下载工具类

先依赖

compile ‘com.liulishuo.filedownloader:library:1.3.0‘
import android.content.Context;

import com.hyphenate.chat.EMMessage;
import com.liulishuo.filedownloader.BaseDownloadTask;
import com.liulishuo.filedownloader.FileDownloadListener;
import com.liulishuo.filedownloader.FileDownloader;
import com.xuehu365.xuehu.data.DynamicDownLoadData;
import com.xuehu365.xuehu.model.DynamicModel;
import com.xuehu365.xuehu.model.event.DynamicDownLoadProgress;
import com.xuehu365.xuehu.utils.PathUtil;

import org.greenrobot.eventbus.EventBus;

import java.io.File;

/**
 * Created by Administrator on 2017/1/13.
 */
public class DynamicDownLoader {
    public static void downLoad(Context context, final DynamicModel dynamicModel) {
        String fileName = dynamicModel.getLinkUrl().substring(dynamicModel.getLinkUrl().lastIndexOf("/") + 1);
        String filePath = PathUtil.getInstance().getVideoPath() + File.separator + fileName;

        BaseDownloadTask task = FileDownloader.getImpl().create(dynamicModel.getLinkUrl()).setPath(filePath)
                .setListener(new FileDownloadListener() {
                    @Override
                    protected void pending(BaseDownloadTask task, int soFarBytes, int totalBytes) {

                    }

                    @Override
                    protected void progress(BaseDownloadTask task, int soFarBytes, int totalBytes) {
                        dynamicModel.setDownLoadPercent(Math.round(((float) (soFarBytes * 100)) / totalBytes));
                        dynamicModel.setDownLoadStatus(EMMessage.Status.INPROGRESS.ordinal());
                        DynamicDownLoadData.saveView(dynamicModel);
                        EventBus.getDefault().post(new DynamicDownLoadProgress());
                    }

                    @Override
                    protected void completed(BaseDownloadTask task) {
                        dynamicModel.setLoadlUrl(task.getPath());
                        dynamicModel.setDownLoadStatus(EMMessage.Status.SUCCESS.ordinal());
                        DynamicDownLoadData.saveView(dynamicModel);
                        EventBus.getDefault().post(new DynamicDownLoadProgress());
                    }

                    @Override
                    protected void paused(BaseDownloadTask task, int soFarBytes, int totalBytes) {

                    }

                    @Override
                    protected void error(BaseDownloadTask task, Throwable e) {
                        dynamicModel.setDownLoadStatus(EMMessage.Status.FAIL.ordinal());
                        DynamicDownLoadData.saveView(dynamicModel);
                        EventBus.getDefault().post(new DynamicDownLoadProgress());
                    }

                    @Override
                    protected void warn(BaseDownloadTask task) {

                    }
                });
        task.start();
    }

}
时间: 2024-10-12 04:54:58

文件下载工具类的相关文章

JavaWeb响应下载(包含工具类)

纸上得来终觉浅,绝知此事要躬行!今天博主分享是关于javaweb的响应(response)下载 以下是我的Demo: 页面我就粘主要部分的代码 <a href = "${pageContext.request.contextPath }/user/courseTab">模板下载</a> 当然,现在的项目大家都使用框架,这里我使用的是(SSM),好了,粘代码 @Controller @RequestMapping("/user") public

文件下载之文件名乱码问题的工具类

package cn.itcast.down.utils; import java.io.IOException;import java.net.URLEncoder; import javax.servlet.http.HttpServletRequest; import sun.misc.BASE64Encoder;/* * 下载文件的工具类 */public class DownUtils { public static String filenameEncoding(String fil

Android两个页面之间的切换效果工具类

import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Build; import android.widget.Toast; public class ActivityAnimationUtil { private Context context; pr

[C#] 常用工具类——文件操作类

/// <para> FilesUpload:工具方法:ASP.NET上传文件的方法</para> /// <para> FileExists:返回文件是否存在</para> /// <para> IsImgFilename:判断文件名是否为浏览器可以直接显示的图片文件名</para> /// <para> CopyFiles:复制指定目录的所有文件</para> /// <para> MoveFi

Android开发工具类之DownloadManagerPro

这个工具类就是Android系统下载管理DownloadManager的一个增强类,提供了一些增强方法.或许大家不太了解这个安卓系统自带的DownloadManager这个类,我先做一个简单介绍吧.DownloadManager是系统开放给第三方应用使用的类,包含两个静态内部类DownloadManager.Query和DownloadManager.Request. DownloadManager.Request用来请求一个下载,DownloadManager.Query用来查询下载信息.用d

推荐一个java操作ftp的工具类

目录 写在前面 1 导入jar包 2 工具类中主要方法 2.1 登陆ftp 2.2 获取远程文件目录 2.3 上传文件 2.4 下载文件 3 源码 @(终于等到你) 写在前面 作为经常使用电脑整理文件的童鞋,应该都使用过从ftp服务器上传下载文件,那么今天就了解下如何通过java程序操作ftp服务的文件 首先你要知道ftp的ip,路径,端口,有操作权限的账号和密码 1 导入jar包 commons-net-3.6.jar 这个jar包用来设置编码,经过测试,不加也可用 2 工具类中主要方法 2.

java中excel导入\导出工具类

1.导入工具 1 package com.linrain.jcs.test; 2 3 4 import jxl.Cell; 5 import jxl.Sheet; 6 import jxl.Workbook; 7 import jxl.write.Label; 8 import jxl.write.WritableSheet; 9 10 import java.io.InputStream; 11 import java.lang.reflect.Field; 12 import java.te

Arrays工具类

Arraysd的静态方法能够方便的对数组进行操作,每个方法也加了注释 : 程序: import java.util.*;public class Array{        public static void main(String[] args){                int[]  arr={1,3,4,2};                System.out.println("排序前:");                printArray(arr);//打印原数组

常用工具类(System,Runtime,Date,Calendar,Math)

一.Sy 一个java.lang包中的静态工具类. 三大字段: static PrintStream err "标准"错误输出流. static InputStream in "标准"输入流. static PrintStream out "标准"输出流. 其他常用方法: 描述系统信息: 获取系统属性信息: static Properties getProperties(): (Properties是Hashtable的子类,也就是Map 的子类