十一假期結束了,大家過得快樂嗎?我是過的蠻累的!今天來公司的第一件事就是學習一下斷點下載,等幾天項目要用到下載,先儲備一下,免得到時候手忙腳亂。
從拿到原型圖看到有下載的需求,我就開始查看有關下載的學習資料,原生的下載寫起來很麻煩,還要自己寫數據庫,後來經朋友提點用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(“暫停下載”);
}
}
}
可以了,就是這麼簡單,下載完成就可以直接播放了