2016-02-21 8 views
7

Я пытаюсь разработать приложение для Android, чтобы измерять скорость загрузки и загрузки моей сети, что, вероятно, мне нужно будет запускать и профиль через каждые 2 секунды или около того. SpeedTest.net приложение - это идеальное приложение, работающее аналогичным образом, однако оно не является открытым исходным кодом. Более того, мне нужно, чтобы он запускался каждые 2 секунды. Для завершения теста требуется несколько секунд.Профайлинг загрузки и загрузки в Android

Как я могу это сделать? В настоящее время я просто загружаю небольшой случайный файл .txt, который находится где-то в Интернете, и измеряет size/time-to-download как показатель скорости загрузки. Но я получаю странные результаты каждый раз. По-видимому, этот подход не работает.

UPDATE: загрузка завершена. Любые советы о том, как реализовать скорость загрузки?

ответ

8

Вам необходимо скачать значительно больший файл, который занимает как минимум 15 секунд для загрузки. Чем больше файл, тем лучший результат вы получите. Используйте постоянный сервер с высокой доступностью. Кроме того, использование накопления на время вашей сети вызывает только (я считаю, что вы должны использовать какой-то сокет читать в while цикле. Так что System.currentTimeMillis() до и после socket.read() и продолжать добавлять их)

Это довольно много, что SpeedTest.net делает также

Что касается загрузки, вы можете сделать то же самое. Грубая псевдо-код:

upload (String remote, InputStream localfile){ 
    Socket s = openDataConnection(remote); 
    OutputStream os = new BufferedOutputStream (s.getOutputStream(), MAX_BUFFER_SIZE); 

    byte[] buffer = new byte[MAX_BUFFER_SIZE]; 
    long totalTime = 0L; 
    while((buffer = localfile.read())!= -1){ 
     long startTime = System.currentTimeMillis(); 
     os.write(buffer); 
     long endTime = System.currentTimeMillis(); 
     totalTime += (endTime - startTime); 
    } 
} 
5

Для закачки, вам нужно будет настроить двустороннюю связь с сервером. Я бы сделал это с помощью простой петли:

while(x){ 
Starttime =getCurrentTime() 
Sendfile() //Send a Xmb file that the server can verify 
waitForVerification() // Wait for a reply from server. 
compareCurrentTimeWithStartingTime() // compare the times. 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^