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