Android 我正在开发一个应用程序来测试下载/上传速度。在速度比较方面面临一个重大问题

Android 我正在开发一个应用程序来测试下载/上传速度。在速度比较方面面临一个重大问题,android,performance,mobile,wifi,Android,Performance,Mobile,Wifi,因此,对于下载速度,我基本上使用了目前广泛使用的方法,即保持一个计时器并按如下方式下载文件。但与Ookla的Speedtest相比,速度要小得多: public class InternetSpeedTest extends AsyncTask<String,Void,String> { long startTime; long endTime; private long takenTime; @Override protected

因此,对于下载速度,我基本上使用了目前广泛使用的方法,即保持一个计时器并按如下方式下载文件。但与Ookla的Speedtest相比,速度要小得多:

    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));
        }
    }
}
公共类InternetSpeedTest扩展了异步任务{
长启动时间;
长时间;
私人长假;
@凌驾
受保护的字符串doInBackground(字符串…urlVar){
startTime=System.currentTimeMillis();
位图bmp=null;
试一试{
URL ulrn=新URL(urlVar[0]);
HttpURLConnection con=(HttpURLConnection)ulrn.openConnection();
InputStream=con.getInputStream();
bmp=位图工厂.decodeStream(is);
long lengthbmp=con.getContentLength();
如果(null!=bmp){
endTime=System.currentTimeMillis();
返回长度bmp+“”;
}
}捕获(例外e){
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果){
如果(结果!=null){
long dataSize=Integer.parseInt(结果)/1024;
takenTime=结束时间-开始时间;
双s=(双)takenTime/1000;
双总速度=数据大小/s;
TextView-dspeed=(TextView)findViewById(R.id.filespeed\u tv\u ma);
fileSpeed.setText(Double.toString(totalspeed));
duration.setText(Long.toString(takenTime));
setText(Long.toString(dataSize));
}
}
}
通过ping主机服务器,我获得了良好的延迟。我如何以其他方式实现或改进它?另外,我能为上传速度做些什么

我在某个地方读到过使用TrafficStats的文章。但这并没有给出当前的速度,对吗?
提前谢谢。

您的折扣是8倍左右吗?当速度测试通常以位/秒为单位时,您似乎正在使用字节。感谢您的回复,但没有。我早就想到了。即使在分解8之后,速度至少快了两倍。