Вы пробовали HttpEntity.getContentLength()
, чтобы помочь вам предопределить размер файла? Если вы используете это в сочетании с чем-то вроде OnProgressUpdate () AsyncTask, вы сможете реализовать это.
Взгляните на эту ссылку
Загрузка файла с Android и отображение прогресса в 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.