Ahoj,
řašim výpočet rychlosti stahování souboru z URL ze streamu.
Našel jsem nějaký ukázky a způsoby, ale vždy to vypočítá z průměru což nechci, protože na začátku je rychlost třeba 10Mb/s a až potom se to srovnává, takže to není vůbec přesný.
Následně bych na to chtel napojit zbývající dobu do stáhnutí souboru, ale to udělat nemůžu, protože nemám přesný výpočet rychlosti, takže je to hooodně nepřesný :(
Nevíte někdo jak se dá vypočítat v Javě přesná rychlost stahování? Mám to normálně přes while (načítání do bufferu), takže znám všechny hodnoty, jak velikost souboru, kolik se přečetlo, kolik zbývá stáhnout...
Díky za nějaké rady nebo ukázky :-)
Jinak takto to zatím mám (když odeberu zápis do souboru a ostatní zbytečnosti)
byte buffer[] = new byte[1024];
long downloaded = 0;
int read = 0;
long startNanoTime = System.nanoTime();
while ((read = in.read(buffer, 0, buffer.length)) != -1) {
// zápis do souboru
// vypocet rychlosti (bohuzel je to prumer a je to nepresny...)
float speed = 1000000000f / 1024 * downloaded / (System.nanoTime() - startNanoTime + 1);
downloaded += read;
}