Так что для скорости загрузки я в основном использовал широко распространенный метод хранения таймера и загрузки файла следующим образом. Но скорость намного меньше по сравнению с тем, что дает Speedtest от Ookla:
public class InternetSpeedTest extends AsyncTask<String,Void,String> {
long startTime;
long endTime;
private long takenTime;
@Override
protected String doInBackground(String... urlVar) {
startTime = System.currentTimeMillis();
Bitmap bmp = null;
try {
URL ulrn = new URL(urlVar[0]);
HttpURLConnection con = (HttpURLConnection) ulrn.openConnection();
InputStream is = con.getInputStream();
bmp = BitmapFactory.decodeStream(is);
long lengthbmp = con.getContentLength();
if (null != bmp) {
endTime = System.currentTimeMillis();
return lengthbmp + "";
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
if (result != null) {
long dataSize = Integer.parseInt(result) / 1024;
takenTime = endTime - startTime;
double s = (double) takenTime / 1000;
double totalspeed = dataSize / s;
TextView dspeed = (TextView) findViewById(R.id.filespeed_tv_ma);
fileSpeed.setText(Double.toString(totalspeed));
duration.setText(Long.toString(takenTime));
filesize.setText(Long.toString(dataSize));
}
}
}
Я получаю штраф за задержку при пинге хост-сервера. Как я могу реализовать это любым другим способом или улучшить? Кроме того, что я могу сделать для скорости загрузки.
Я где-то читал об использовании TrafficStats. Но это не дает текущей скорости, верно?
Заранее спасибо.