Afinal框架FinalHttp断点续传视频文件(续)
程序员文章站
2022-04-11 09:08:11
...
上一节课我们简单的实现了视频下载的功效具体的请同学查看上一节课的内容,然而上一节课做的小小demo
并没有体现出断点续传的功效,现在我们来实验一下断点后是否可以续传
断点:可以是网络断开也可以是手工暂停,我们下载视频的时候应该很常见暂时断网或者是暂停下载,如果这个时候再次下载视频需要从头开始,那无疑是一件非常蛋疼的事情。这种情况下就好像是下一个超清史诗大片2G的,在下到百分之九十九的时候下载失败需要从头下载的心情,所以学会使用和理解断点续传是一件非常有意义的事情。
===================================================================================
【界面】:添加一个按键来控制:1.开始下载 2.暂停下载
具体界面应该是这个样子的:
这里在点击开始下载之后会显示暂停按键,还会变色,至于怎么样让按钮点击后变色,是一个颜色选择器的功效,网上教程非常多,这个不是重点,好我们继续。
【关键代码】:
其实添加的代码非常简单,断点续传需要用到一个HandlerHttp,HandlerHttp具体是什么也不是很清楚,待查到官方文档再来补充,或者广大读者知道的可以在下面回复。
public void start(View v){ //初始化FinalHttp FinalHttp fh=new FinalHttp(); //文件保存路径 File f = new File("/storage/emulated/0/imageloader/video"); //文件路径不存在则新建 if (!f.exists()) { f.mkdir(); } if (i % 2 == 0){ bt.setText("暂停"); //设置下载地址,缓存地址,设置支持断点续传,随时停止下载任务 或者 开始任务,Ajax异步加载,开始下载 handler=fh.download("http://f01.v1.cn/group1/M00/13/9F/CgoBNlJINEyACQ0uAGGgCQ1tRfA557.flv", "/storage/emulated/0/imageloader/video/岳麓书院4.flv", true,new AjaxCallBack<File>(){ //下载过程中,count是文件大小,current是下载了多少,做一个百分比显示 public void onLoading(long count, long current) { vp.setText("下载进度:"+current+"/"+count); } //下载完成后输出下载地 public void onSuccess(File t) { vp.setText("下载完成"); Toast.makeText(getApplicationContext(), "下载到:"+t==null?"null":t.getAbsoluteFile().toString(), Toast.LENGTH_LONG).show(); } }); } else{ bt.setText("开始下载"); handler.stop(); } i++; }
使用一个i++来控制调用暂停还是开始下载方法。
实现效果为:点击暂停后,停止下载视频,点击开始下载,接着当前进度再次下载直到完成视频下载。
&&
&&
情况2:在下载过程中,网络断开,再次连上网络后,依然可以按照当前进度进行下载,断点传送诠释完美
下一篇: 断点续传工具类