Я загружаю любой тип файла и хочу рассчитать время задержки, которое скачал файл.
Plzz поможет, как это будет реализовано в android.
Спасибо
Для меня что-то вроде этого делает трюк:
Process process = Runtime.getRuntime().exec("ping -c 1 google.com");
process.waitFor();
Вы можете повторно выражать ответ, читая InputStream, предоставляемые процессом.
Я искал аналогичную проблему.
Вот некоторые связанные ресурсы, которые я нашел. Как проверить скорость интернета (JavaSE)?
В этом сообщении блога рекомендуется использовать InetAddress.getByName(host).isReachable(timeOut), а затем измерять время отклика.
http://tech.gaeatimes.com/index.php/archive/how-to-do-icmp-ping-in-java-jdk-15-and-above/
Это, скорее всего, не лучшее решение, но это легко. Так что-то вроде этого.
String host = "172.16.0.2";
int timeOut = 3000;
long[] time = new long[5];
Boolean reachable;
for(int i=0; i<5; i++)
{
long BeforeTime = System.currentTimeMillis();
reachable = InetAddress.getByName(host).isReachable(timeOut);
long AfterTime = System.currentTimeMillis();
Long TimeDifference = AfterTime - BeforeTime;
time[i] = TimeDifference;
}
Теперь у вас есть массив из 5 значений, которые показали примерно, сколько времени потребовалось, чтобы проверить, достижимо ли машина путем ping; false в противном случае. Мы знаем, если время разницы составляет 3 секунды, а затем время ожидания, вы также можете добавить массив логических чисел, чтобы показать успех и скорость отказа.
Это не идеально, но дает приблизительное представление о задержке в данный момент времени.
Это соответствует определению латентности, найденному по ссылке ниже, за исключением того, что оно измеряет время отправки и возврата, а не время от отправителя к получателю: http://searchcio-midmarket.techtarget.com/definition/latency
Определение. В сети задержка, синоним задержки, является выражением того, сколько времени требуется для того, чтобы пакет данных переходил из одного назначенного пункта в другой.
Выполнение большего количества исследований показывает, что isReachable может не работать так хорошо. Отладка Android InetAddress.isReachable
Это может работать лучше.
HttpGet request = new HttpGet(Url.toString());
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 3000);
HttpClient httpClient = new DefaultHttpClient(httpParameters);
for(int i=0; i<5; i++)
{
long BeforeTime = System.currentTimeMillis();
HttpResponse response = httpClient.execute(request);
long AfterTime = System.currentTimeMillis();
Long TimeDifference = AfterTime - BeforeTime;
time[i] = TimeDifference;
}
Примечание. Имейте в виду, что это не скажет время ожидания при загрузке файла, но дает вам представление о задержке, наблюдаемой в этой сети в определенный период времени.
Если это поможет, примите этот ответ.