十一假期结束了,大家过得快乐吗?我是过的蛮累的!今天来公司的第一件事就是学习一下断点下载,等几天项目要用到下载,先储备一下,免得到时候手忙脚乱。
从拿到原型图看到有下载的需求,我就开始查看有关下载的学习资料,原生的下载写起来很麻烦,还要自己写数据库,后来经朋友提点用xutils框架,那真是超级简单了,只需要几步就可以了,完全不用自己写数据库。
第一步,依赖jar包
第二步,主要用到 HttpUtils类,把相关代码复制到工程中就ok了,下面贴上代码:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private TextView tv;
private Button btn;
private ProgressBar pb;
private String path = “/sdcard/xUtils/” + System.currentTimeMillis() + “ceshi.mp4”;
private String url = “http://is.snssdk.com/neihan/video/playback/?video_id=e5682f0f939e4820abba9590fc7bf0af&quality=origin&line=0&is_gif=0“;
private HttpHandler handler;
private boolean isDownloading = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
btn = (Button) findViewById(R.id.btn);
pb = (ProgressBar) findViewById(R.id.pb);
pb.setMax(100);
btn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
xUtils_Download();
}
private void xUtils_Download() {
HttpUtils http = new HttpUtils();
if (!isDownloading) {
isDownloading = true;
handler = http.download(url, path, true, false, new RequestCallBack<File>() {
@Override
public void onStart() {
super.onStart();
tv.setVisibility(View.VISIBLE);
}
@Override
public void onLoading(long total, long current, boolean isUploading) {
super.onLoading(total, current, isUploading);
btn.setText("正在下载");
pb.setProgress((int) ((double) current
/ (double) total * 100));
tv.setText((int) (current * 100 / total) + "%");
Log.e("tag","开始下载了e");
}
@Override
public void onSuccess(ResponseInfo<File> responseInfo) {
tv.setText(responseInfo.result.getPath());
}
@Override
public void onFailure(HttpException e, String s) {
tv.setText("下载失败-->" + s);
}
});
}
//正在下载时点击,则停止下载
else {
handler.cancel();
isDownloading = false;
btn.setText(“暂停下载”);
}
}
}
可以了,就是这么简单,下载完成就可以直接播放了