HttpEntity.getContent() 进度指示器?

发布于 2024-11-25 05:45:58 字数 233 浏览 1 评论 0原文

在 android API 7+ 中,有什么方法可以报告调用 HttpEntity.getContent() 的进度吗?

就我而言,我在响应流中获取图像,因此传输可能需要相当长的时间。我想要一个样式设置为 STYLE_HORIZONTALProgressDialog 随着传输进度进行更新。

有办法做到这一点吗?

谢谢!

Is there any way in android API 7+ that I can report on the progress of a call to HttpEntity.getContent()?

In my case I am getting an image in the response stream so the transfer can take quite a while. I want to have a ProgressDialog with the style set to STYLE_HORIZONTAL be updated with the progress of the transfer.

Any way to do this?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

愁以何悠 2024-12-02 05:45:58

您是否尝试过 HttpEntity.getContentLength() 来帮助您预先确定文件的大小?如果您将其与 AsyncTask 的 onProgressUpdate() 之类的东西结合使用,您应该能够实现它。

看看这个链接

使用 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 中更新您的对话框。

Have you tried HttpEntity.getContentLength() to help you predetermine the size of the file? If you use that in conjunction with something like AsyncTask's onProgressUpdate(), you should be able to implement that.

Take a look at this link

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

It has pretty much what you're looking for. it uses urlConnection to get the InputStream so you would need to adapt that to use HttpEntity. So maybe you'd have something like this.

@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();
}

and update your dialog in onProgressUpdate.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文