私はまだ Android に慣れていないので、そのライブラリや API についてはまだよくわかりません。
私の最初の主要なプロジェクトは、セグメント化されたダウンロードをサポートするダウンロード マネージャーです。すでにファイルをダウンロードできましたが、セグメント化されたダウンロードを開始する方法や場所についてはまだわかりません。
すでに多くのスレッドを閲覧しましたが、Android での分割ダウンロードに関する記事やスレッドはまったく見つかりませんでした。
誰でも私を助けてもらえますか?
このスレッドはあなたを助けるはずです:リンク
アイデアは、リクエストのヘッダーでContent-Rangeキーワードを使用することです(接続しているサーバーがそれを管理できる必要があります)
インスピレーションを引き出すことができるサンプルコード:
public String readFirstChunk(String urlString, int byteCount) {
String text = null;
if (urlString != null) {
org.restlet.Client restletClient = new org.restlet.Client(Protocol.HTTP);
Request request = new Request(Method.GET, urlString);
List<Range> ranges = Collections.singletonList(new Range(0, byteCount));
request.setRanges(ranges);
Response response = restletClient.handle(request);
if (Status.SUCCESS_OK.equals(response.getStatus())) {
text = processSuccessfulChunkRequest(response);
} else if (Status.SUCCESS_PARTIAL_CONTENT .equals(response.getStatus())) {
text = processSuccessfulChunkRequest(response);
} else {
System.err.println("FAILED "+response.getStatus());
}
}
return text;
}
private String processSuccessfulChunkRequest(Response response) {
String text = null;
try {
text = response.getEntity().getText();
} catch (IOException e) {
throw new RuntimeException("Cannot download chunk", e);
}
return text;
}
Accept-Rangesヘッダーと、AndroidのHttpClientクラスについても学習する必要があります。
セグメント化されたダウンロードでは、HttpClientを使用したリクエストを介してAccept-Rangesヘッダーでさまざまな値を送信し、部分的なコンテンツを受信してから、受信したすべてのコンテンツを1つのファイルにマージします。