android 断点下载---XUtils

配置权限

<uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

  /MainActivity.java

package com.bawei.myxutils;

import java.io.File;
import java.math.BigDecimal;

import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.HttpHandler;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;

public class MainActivity extends Activity {

    private ProgressBar pb;
    private TextView text1;
    private TextView text2;
    private String path;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        pb = (ProgressBar) findViewById(R.id.progressBar1);// 进度条
        text1 = (TextView) findViewById(R.id.text1);// 显示当前下载了多少
        text2 = (TextView) findViewById(R.id.text2);// 显示下载总大小
        path = Environment.getExternalStorageDirectory().getPath();// 得到SD卡路径
        HttpUtils http = new HttpUtils();
        /**
         * url 下载的路径 target 下载文件保存的路径 autoResume 是否支持断点续传
         */
        HttpHandler handler = http.download(
                "http://101.200.142.201:8080/tqyb/dancer.avi", path
                        + "/dancer.avi", true /* 如果目标文件存在,接着未完成的部分继续下载。 */,
                true/* 如果从请求返回信息中获取到文件名,下载完成后自动重命名。 */,
                new RequestCallBack<File>() {
                    @Override
                    public void onStart() {
                        // TODO Auto-generated method stub
                        super.onStart();
                        Toast.makeText(MainActivity.this, "开始下载", 0).show();
                    }

                    /**
                     * 加载进度 pb为进度条,实现进度条进度加载 total 总得大小 current 当前的大小
                     */
                    @Override
                    public void onLoading(long total, long current,
                            boolean isUploading) {
                        // TODO Auto-generated method stub
                        pb.setMax((int) total);
                        pb.setProgress((int) current);
                        // 将字节转换成M
                        BigDecimal filesize = new BigDecimal(current);
                        BigDecimal megabyte = new BigDecimal(1024 * 1024);
                        float returnValue = filesize.divide(megabyte, 2,
                                BigDecimal.ROUND_UP).floatValue();
                        text1.setText(returnValue + "M");
                        // 将字节转换成M
                        BigDecimal filesize1 = new BigDecimal(total);
                        BigDecimal megabyte1 = new BigDecimal(1024 * 1024);
                        float returnValue1 = filesize1.divide(megabyte1, 2,
                                BigDecimal.ROUND_UP).floatValue();
                        text2.setText(returnValue1 + "M");

                    }

                    @Override
                    public void onSuccess(ResponseInfo<File> arg0) {
                        // TODO Auto-generated method stub
                        Toast.makeText(MainActivity.this, "下载成功", 0).show();
                    }

                    @Override
                    public void onFailure(HttpException arg0, String arg1) {
                        // TODO Auto-generated method stub
                        Toast.makeText(MainActivity.this, "下载失败", 0).show();
                    }
                });

    }

}

 效果展示

 

时间: 2024-10-24 14:52:22

android 断点下载---XUtils的相关文章

android断点下载并显示进度,关于handle,和主线程不能联网采取子线程联网下载,和多线程下载学习

package cn.multidownload; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.RandomAccessFile; import java.ne

Android之——断点下载示例

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46897641 在上一篇博文<Android之--多线程下载示例>中,我们讲解了如何实现Android的多线程下载功能,通过将整个文件分成多个数据块,开启多个线程,让每个线程分别下载一个相应的数据块来实现多线程下载的功能.多线程下载中,可以将下载这个耗时的操作放在子线程中执行,即不阻塞主线程,又符合Android开发的设计规范. 但是当下载的过程当中突然出现手机卡死,或者网络中断

Android/java http多线程断点下载(附源码)

先看下项目结构: http多线程断点下载涉及到 数据库,多线程和http请求等几个模块,东西不是很多,想弄清楚也不是很困难,接下来我和大家分享下我的做法. 一.先看MainActivity.java 成员变量,主要是一些下载过程的变量和handler private String path = "http://192.168.1.3:8080/wanmei/yama.apk"; private String sdcardPath; private int threadNum = 5;

android网络编程之HttpUrlConnection的讲解--实现文件断点下载

1.没有实现服务器端,下载地址为网上的一个下载链接. 2.网络开发不要忘记在配置文件中添加访问网络的权限 <uses-permission android:name="android.permission.INTERNET"/> 3.网络请求.处理不能在主线程中进行,一定要在子线程中进行.因为网络请求一般有1~3秒左右的延时,在主线程中进行造成主线程的停顿,对用户体验来说是致命的.(主线程应该只进行UI绘制,像网络请求.资源下载.各种耗时操作都应该放到子线程中). 4.断点

Android网络编程之——文件断点下载(暂停/继续/重新下载)

开头还是不说废话了直接进入主题吧! 一:关于断点下载所涉及到的知识点 1.对SQLite的增删改查(主要用来保存当前任务的一些信息) 2.HttpURLConnection的请求配置 HttpURLConnection connection = null; //设置下载请求属性 connection.setRequestProperty(); 3.RandomAccessFile 对文件进行写入 RandomAccessFile rwd = null; //从文件的某一位置写入 rwd.seek

Android实现多线程断点下载

本案例在于实现文件的多线程断点下载,即文件在下载一部分中断后,可继续接着已有进度下载,并通过进度条显示进度.也就是说在文件开始下载的同时,自动创建每个线程的下载进度的本地文件,下载中断后,重新进入应用点击下载,程序检查有没有本地文件的存在,若存在,获取本地文件中的下载进度,继续进行下载,当下载完成后,自动删除本地文件. 1. 定义布局文件需要用到的属性名及内容 2. 设置用户的Internet权限和关于SD卡的权限 <span style="font-size:14px;">

Android 多线程断点下载源码

源码下载地址   http://download.csdn.net/detail/kiduo08/7709391 Android 多线程断点下载源码

安卓(android)之实现断点下载功能

一.建立实体类 1.文件实体类 package com.example.zjw.myapplication.dao; import java.io.Serializable; /** * 预下载文件实体类 * Created by Administrator on 2016/6/20. */public class FileInfo implements Serializable { //文件id private int id; //文件下载地址 private String url; //文件

Android 学习之--android多线程断点下载

我们平时都用"迅雷"下载软件,当下载到一半的时候突然断网,下次开启的时候能够从上次下载的地方继续下载,而且下载速度很快,那么这是怎么做到的呢! 其实它的“快”其实就是多线程的下载实现的,断点下载的原理是将每次下载的字节数存取下来,保证存取的子节点跟下载的同步,并在用户下次下载的时候自动读取 存储点,并以存储点为开始值继续下载.那么android里面如何实现这么断点的下载呢? 在res的布局文件里面先画一个带有进度条的下载界面 activity_main.xml <LinearLa