2

私はまだ Android に慣れていないので、そのライブラリや API についてはまだよくわかりません。

私の最初の主要なプロジェクトは、セグメント化されたダウンロードをサポートするダウンロード マネージャーです。すでにファイルをダウンロードできましたが、セグメント化されたダウンロードを開始する方法や場所についてはまだわかりません。

すでに多くのスレッドを閲覧しましたが、Android での分割ダウンロードに関する記事やスレッドはまったく見つかりませんでした。

誰でも私を助けてもらえますか?

4

2 に答える 2

2

このスレッドはあなたを助けるはずです:リンク

アイデアは、リクエストのヘッダーで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;
}
于 2012-09-09T08:55:10.633 に答える
0

Accept-Rangesヘッダーと、AndroidのHttpClientクラスについても学習する必要があります。

セグメント化されたダウンロードでは、HttpClientを使用したリクエストを介してAccept-Rangesヘッダーでさまざまな値を送信し、部分的なコンテンツを受信して​​から、受信したすべてのコンテンツを1つのファイルにマージします。

于 2012-09-09T08:55:46.253 に答える