1
在我的应用程序中,我通过HTTP连接从服务器下载媒体。无论如何连接断开时(例如,没有n/w,权限撤销),下载文件时会部分下载。Android部分下载http
此前我们正在删除文件并从头开始下载。
现在,需求发生了变化。我必须从我离开的地方继续(如在WhatsApp中)。
所以我正在做的是检查文件的存在,如果文件存在跳过流。请找到下面的代码片段。
InputStream is = con.getInputStream();
File file = new File(targetPath);
boolean fileExist = file.exists();
if (fileExist) {
long skippedBytes = is.skip(file.length());
}
// opens an output stream to save into file
OutputStream os = new FileOutputStream(targetPath, fileExist);
它的工作仅仅是跳过而实际上不工作。说,文件(视频)的长度是20秒,并在第一次尝试我下载了6秒,其后休息。但是当我播放它只是播放到6秒,然后抛出通常的视频播放错误。
使用'InputStream.skip'不作SENS ...它仍然会被下载,但跳过......如果服务器支持Range头,我宁愿用它 – Selvin
@Selvin,我知道这不会救带宽,但它应该工作。为了节省带宽,我们需要在服务器端跳过。我正试图在客户端实现(不用担心带宽)使用跳过。 –
我宁愿使用http头'Range',如果它支持后端 – Blackbelt