2012-10-16 11 views
7

Ich entwickle eine Anwendung wie Internet Download Manager für Android.Android: Laden Sie eine einzelne Datei in vielen Teilen

Ich möchte wissen, wie man verschiedene Teile der Datei in Android herunterladen, wie es in IDM gemacht wird.

Wie kann ich die Metadaten der Datei vor dem Download erhalten und wie Dateien in Teilen herunterladen?

Es gibt kein Benutzername-Passwort oder Einschränkungen beim Herunterladen ... nur ein einfacher Download von URL.

+0

Durch welche Art von Protokoll? –

+0

http, https oder ftp –

Antwort

6

Angenommen, Sie verwenden HTTP für den Download, möchten Sie möglicherweise die HEAD HTTP-Verb und RANGE HTTP-Header verwenden.

HEAD gibt Ihnen die Dateigröße (wenn verfügbar), und dann RANGE können Sie einen Bytebereich herunterladen.

Sobald Sie die Dateigröße haben, teilen Sie es in etwa gleich große Stücke und spawnen Download-Thread für jeden Chunk. Wenn alle fertig sind, schreiben Sie die Dateiblöcke in der richtigen Reihenfolge.

EDIT:

Wenn Sie nicht wissen, wie die RANGE Header zu verwenden, hier ist eine andere SO Antwort, die erklärt, wie: https://stackoverflow.com/a/6323043/1355166

+0

gibt es irgendeine Funktion in Android, um dies zu implementieren? –

+0

Ja, ich habe die Antwort bearbeitet, um einen Link zu einer anderen Antwort hinzuzufügen. – gcochard

+2

"Bereich" ist eine Kopfzeile tatsächlich – irreputable