0
我正在使用下面的代码下载视频,并维护一个进度条来显示下载已完成的程度。在Android上下载文件大于文件大小
ByteArrayBuffer baf = new ByteArrayBuffer((int)filesize);
long current = 0;
long notificationSize = filesize/100 * 5;
int notifyCount = 0;
while ((current = inStream.read()) != -1)
{
baf.append((byte) current);
count += current;
//only process update once for each kb
if(count > notificationSize * notifyCount)
{
notifier.processUpdate(count);
notifyCount++;;
}
}
我遇到的问题是从输入流返回的数据加起来多于文件大小。意味着我的进度条在下载完成之前完成。
例如,我正在下载一个文件大小为1,849,655字节的视频,但下载次数增加到228,932,955。
Android进度条使用完成过程的百分比。如果下载的总字节数超过文件的大小,我怎么知道完成了多少?
你如何分配文件大小的值? – 2012-01-29 23:47:52
我正在通过两种方法来确保我的尺寸合适。大小是在RSS源中,我从中获取文件位置。我也使用URLConnection实例中的getContentLength。两者都会返回与下载文件大小相同的文件大小 – Stimsoni 2012-01-29 23:50:41
找到解决方案。这是因为read()每次只读取一个字节,但返回的读取字节数多于一个。我稍后会发布完整的解决方案,因为我没有权限快速回答我自己的问题。 – Stimsoni 2012-01-30 01:15:20