/** * 断点续传 * @param url */ private void duanDianXuChuan(final String url){ try { Runnable r = new Runnable() { @Override public void run() { getRemoteFile(url); } }; new Thread(r).start(); } catch (Exception e) { e.printStackTrace(); } } /** * 下载远端文件 * @param urlString */ private void getRemoteFile(String urlString){ try{ File file; if(mCurSize == 0){ file = File.createTempFile(fileNa, fileEx); currentTempFilePath = file.getAbsolutePath(); Log.e(“andy”,file.getName() + ” has exists.”); } else { file = new File(currentTempFilePath); FileInputStream fis = new FileInputStream(file); mCurSize = fis.available(); Log.e(“andy”,file.getName() + ” has ” + mCurSize + ” bytes.”); } URL url = new URL(urlString); HttpURLConnection httpConnection = (HttpURLConnection) url .openConnection(); httpConnection.setRequestProperty(“User-Agent”, “NetFox”); String sProperty = “bytes=” + mCurSize + “-”; httpConnection.setRequestProperty(“RANGE”, sProperty); InputStream is = httpConnection.getInputStream(); Log.e(“andy”,”mTempFileName = ” + mTempFileName); /*将文件写入暂存盘*/ FileOutputStream fos = new FileOutputStream(file, true); byte buf[] = new byte[512]; do { int numread = is.read(buf); if (numread <= 0) { mHandler.sendEmptyMessageDelayed(this.DOWNLOAD_FINISH, 0); break; } mCurSize += numread; mHandler.sendEmptyMessageDelayed(this.UPDATE_DOWNLOAD_PROGRESS, 0); Log.e(“andy”,”current size = ” + mCurSize); fos.write(buf, 0, numread); }while (mContinue); /*打开文件进行安装*/ if(mCurSize == mSize) { mCurSize = 0; openFile(file); } try { is.close(); } catch (Exception ex) { Log.e(“andy”, “error: ” + ex.getMessage(), ex); } }catch(Exception e){ e.printStackTrace(); } } /** * 获得文件长度 * @param urlString * @return */ public long getFileSize(String urlString) { int nFileLength = -1; try { URL url = new URL(urlString); HttpURLConnection httpConnection = (HttpURLConnection) url .openConnection(); httpConnection.setRequestProperty(“User-Agent”, “NetFox”); int responseCode = httpConnection.getResponseCode(); if (responseCode >= 400) { return -2; // -2 represent access is error } String sHeader; for (int i = 1;; i++) { sHeader = httpConnection.getHeaderFieldKey(i); if (sHeader != null) { if (sHeader.equals(“content-length”)) { nFileLength = Integer.parseInt(httpConnection .getHeaderField(sHeader)); break; } } else break; } } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return nFileLength; } /** * 计算百分比 * @param p1 * @param p2 * @return */ public static String percent(double p1, double p2) { String str; double p3 = p1 / p2; NumberFormat nf = NumberFormat.getPercentInstance(); nf.setMinimumFractionDigits(2); str = nf.format(p3); Log.e(“andy”,”percentage = ” + str); return str; }
相关推荐
android的断点续传,具体可以看看我博客的日志
OKHttp3是如今非常流行的Android网络请求框架,那么如何利用Android实现断点续传呢,今天写了个Demo尝试了一下,感觉还是有点意思 准备阶段 我们会用到OKHttp3来做网络请求,使用RxJava来实现线程的切换,并且开启Java8...
基于android实现下载网络资源,文件、多媒体等,采用多线程,实现了断点续传。
实现文件的断点续传功能,进行文件的双方面下载功能,实现文件的断点续传功能,简单明了
Android中实现断点续传下载功能,有详细的注释,需要的打包带走。
使用HttpURLConnection实现断点续传
android客户端实现断点续传功能,可实现多线程断点续传下载。实现android端断点续传下载需要服务器的支持,本demo中包含了个人写的服务器端的下载功能的demo.
android实现ftp断点续传下载类,完成后自动通知调用程序
本人收集的关于安卓实现下载,断点续传和进度显示等代码,希望能帮助有需要的朋友
通过Android自带的Asynctask类实现断点续传下载功能,代码简单明了
android中实现断点续传,多线程下载。
《Android多线程断点续传下载网络上的音/视频等各种文件》多线程,断点续传,各种网络上的数据,下载网络上的数据时基本功!加油了各位!
一个实现断点续传的android小demo,帮助理解怎样断点续传下载实现
Android 断点续传 源码 java Demo
为应用apk更新实现的断点续传代码,可以自己根据需求实现apk更新的各种情况
实现Android大文件断点续传功能,如果上传文件不大小于2M可以使用Http上传,如果太大可以使用此方法
android客户端的 文件的断点续传上传 使用的socket上传 针对是post请求 考虑到可能上传的数据比较大 会比较耗时 故使用了断点续传的 功能
使用java 语言实现的 Socket文件断点续传 ,可用于Android开发。
那么,多线程断点需要什么功能? 1.多线程下载, 2.支持断点。 使用多线程的好处:使用多线程下载会提升文件下载的速度。那么多线程下载文件的过程是: (1)首先获得下载文件的长度,然后设置本地...
Android 断点续传原理以及实现 0. 前言 在Android开发中,断点续传听起来挺容易,在下载一个文件时点击暂停任务暂停,点击开始会继续下载文件。但是真正实现起来知识点还是蛮多的,因此今天有时间实现了一下,并...