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