プロが教えるわが家の防犯対策術!

コンテンツダウンロード時のプログレス更新処理について

Java(Android)にてサーバーからコンテンツをダウンロード行う際に進捗具合をプログレスバーに表示させる処理を考えてます。

org.apache.http.HttpResponseのwriteTo(OutputStream)を使用してファイルに直接書き出してますが書き込みの進捗をどのように取得すればよいのかわかりません。

全体のファイルサイズは下記のように取得出来ました。
HttpResponse response = httpclient.execute(httppost);
total = (int)response.getEntity().getContentLength();

経験不足でネットワークプログラム自体よくわかってませんがよろしくお願いします。

A 回答 (1件)

writeTo()を使わずに自分でInputStreamからデータを読んでOutputStreamへ書き込めば、読み込み/書き込み済みのサイズを計算できると思います。

下のコードは試していません。

HttpEntity entity = httpResponse.getEntity();
long size = entity.getContentLength();
InputStream is = entity.getContent();
byte[] buf = new byte[1024];
long sum = 0;
int n;

while ((n = is.read(buf, 0, buf.length)) > 0) {
sum += n; → このsumとsizeの値を使ってプログレスバーを表示
bufの内容をOutputStreamへ出力
}
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

非常に簡単なことで申し訳ないです。
おかげさまで上手くできました。

お礼日時:2010/06/28 00:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!