2011-07-19 20 views
2

HttpEntity.getContent()への呼び出しの進捗状況を報告できる方法はありますか?HttpEntity.getContent()進捗インジケータ?

私の場合は、応答ストリームに画像がありますので、転送にはかなりの時間がかかります。私はのスタイルをSTYLE_HORIZONTALに設定して転送の進行状況を更新したいと思っています。

これを行う方法はありますか?

ありがとうございます!

答えて

2

HttpEntity.getContentLength()を使用して、ファイルのサイズを事前に決めてみましたか? AsyncTaskのonProgressUpdate()のようなものと組み合わせて使うと、それを実装できるはずです。

は、このリンクで

Download a file with Android, and showing the progress in a ProgressDialog

を見てくださいそれはあなたが探しているものをほとんど持っています。 urlConnectionを使用してInputStreamを取得し、HttpEntityを使用するように調整する必要があります。だから多分このようなものがあるだろう。

@Override 
protected String doInBackground(String... aurl) { 
    int count; 
    long contentLength = <yourHttpEntity>.getContentLength(); 
    InputStream input = new BufferedInputStream(<yourHttpEntity>.getContent()); 
    OutputStream output = new FileOutputStream("/sdcard/your_photo.jpg"); 

    byte data[] = new byte[1024]; 

    long total = 0; 
    while ((count = input.read(data)) != -1) { 
     total += count; 
     publishProgress(""+(int)((total*100)/contentLength)); 
     output.write(data, 0, count); 
    } 

    output.flush(); 
    output.close(); 
    input.close(); 
} 

あなたのダイアログをonProgressUpdateで更新してください。

+0

実際に[this](http://stackoverflow.com/questions/3028306/download-a-file-with-android-and-showing-the-progress-in-a-)の著者にクレジットを与える必要があります。 progressdialog/3028660#3028660)答え。 – Wroclai

+0

リンクを更新しました。どうも。 – Otra

+0

ありがとう、少し仕事を取ったが、私はそれを得た! – FlyingStreudel

関連する問題