HttpEntity.getContent () Индикатор прогресса? - PullRequest
2 голосов
/ 19 июля 2011

Есть ли в Android 7+ способ, которым я могу сообщить о ходе вызова на HttpEntity.getContent()?

В моем случае я получаю изображение в потоке ответов, поэтому передача может занять довольно много времени. Я хочу, чтобы ProgressDialog со стилем, установленным на STYLE_HORIZONTAL, обновлялся по мере передачи.

Есть ли способ сделать это?

Спасибо!

1 Ответ

2 голосов
/ 19 июля 2011

Вы пробовали 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.

...