编程语言
首页 > 编程语言> > 如何在我的Android应用程序中确定Internet速度

如何在我的Android应用程序中确定Internet速度

作者:互联网

在我的应用程序中,我希望当我单击一个按钮时,它会向我显示确切的互联网速度.
我已经阅读了有关此问题的所有答案,该问题已在此链接determining internet speed in android,Calculating Internet Speed in android,Internet Speed in android programming等中提出.
但我没有完全找到答案.我用过这个:

WifiInfo.getLinkSpeed()

但它显示了最高速度.我也使用这个代码:

TrafficStats

但它对我没有用.我需要显示我的网络速度(即100 kbps).我怎样才能做到这一点?
请帮我.

解决方法:

要首先确定Android应用程序中的Internet速度,您需要从onlineserver下载一些文件.
为什么我们需要下载文件?检查互联网下载速度的平均值.

为此你需要像这样编码

 private class InternetSpeedTest
        extends AsyncTask<String, Void, String> {

    long startTime;
    long endTime;
    private long takenTime;

    @Override
    protected String doInBackground(String... paramVarArgs) {

        startTime = System.currentTimeMillis();
        Log.d(TAG, "doInBackground: StartTime" + startTime);

        Bitmap bmp = null;
        try {
            URL ulrn = new URL(paramVarArgs[0]);
            HttpURLConnection con = (HttpURLConnection) ulrn.openConnection();
            InputStream is = con.getInputStream();
            bmp = BitmapFactory.decodeStream(is);

            Bitmap bitmap = bmp;
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.JPEG, 99, stream);
            byte[] imageInByte = stream.toByteArray();
            long lengthbmp = imageInByte.length;

            if (null != bmp) {
                endTime = System.currentTimeMillis();
                Log.d(TAG, "doInBackground: EndTIme" + endTime);
                return lengthbmp + "";
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;

    }

    protected void onPostExecute(String result) {

        if (result != null) {
            long dataSize = Integer.parseInt(result) / 1024;
            takenTime = endTime - startTime;
            double s = (double) takenTime / 1000;
            double speed = dataSize / s;
            Log.d(TAG, "onPostExecute: " + "" + new DecimalFormat("##.##").format(speed) + "kb/second");
        }
    }

在此代码中将从Here下载图片

在doInBackground中,您将在此处完成下载后计算Image的大小

Bitmap bitmap = bmp;
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 99, stream);
        byte[] imageInByte = stream.toByteArray();
        long lengthbmp = imageInByte.length

最后一件事是通过减去endtime表单开始时间来计算takenTime,速度是(size / takenTime)

我希望这个对你有用

标签:android,mobile,wifi,monitor,wifimanager
来源: https://codeday.me/bug/20190623/1268032.html