Android 部分下载 http

Android partial download http

在我的应用程序中,我通过 HTTP 连接从服务器下载媒体。下载时如果连接断开(例如,没有 n/w,权限被撤销),文件将被部分下载。

之前我们是删除文件,从头开始下载。

现在,要求发生了变化。我必须从我离开的地方继续(就像在 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 秒,然后抛出通常的视频播放错误。

File file = new File(targetPath);

if (file.exists()) {
    con.setRequestProperty("Range", "bytes=" + (file.length()) + "-");
} else {
    con.setRequestProperty("Range", "bytes=" + 0 + "-");
}