美文网首页
Android 获取当前网速

Android 获取当前网速

作者: 洒一地阳光_217d | 来源:发表于2020-08-17 09:01 被阅读0次

参考链接:Android Studio打包arr包并导入Unity中
参考链接:Unity中调用Android方法

轮询获取当前网速,每2s更新一次:
Android UseForUnity.java代码:

package com.android.util;

import android.app.Activity;
import android.os.Handler;
import android.os.Message;

public class UseForUnity {

    private NetSpeedTimer mNetSpeedTimer;
    private String mNetSpeed;

    /// 设置一个 Activity 参数
    private static Activity _unityActivity;
    // 通过反射获取 Unity 的 Activity 的上下文
    public static Activity getActivity() {

        if (null == _unityActivity) {
            try {
                Class<?> classtype = Class.forName("com.unity3d.player.UnityPlayer");
                Activity activity = (Activity) classtype.getDeclaredField("currentActivity").get(classtype);
                _unityActivity = activity;
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (NoSuchFieldException e) {
                e.printStackTrace();
            }
        }

        return _unityActivity;
    }

    // 开始轮询网速
    // 1s后启动任务,每2s更新一次
    public void StartNetSpeed() {
        //创建NetSpeedTimer实例
        mNetSpeedTimer = new NetSpeedTimer(getActivity(), new NetSpeed(), mHandler).setDelayTime(1000).setPeriodTime(2000);
        //在想要开始执行的地方调用该段代码
        mNetSpeedTimer.startSpeedTimer();
    }

    // 获得网速
    public String GetNetSpeed() {
        return mNetSpeed;
    }

    // 关闭轮询网速
    public void CloseNetSpeed() {
        if (null != mNetSpeedTimer) {
            mNetSpeedTimer.stopSpeedTimer();
        }
    }

    private Handler mHandler = new Handler() {
        private static final String TAG = "UnitTest";

        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what == NetSpeedTimer.NET_SPEED_TIMER_DEFAULT) {
                mNetSpeed = (String) msg.obj;
                // Log.i(TAG, "current net speed  = " + mNetSpeed);
            }
        }
    };
}

Android NetSpeed.java代码:

package com.android.util;

import android.net.TrafficStats;
import android.util.Log;

/**
 * <p>
 * <code>lastTotalRxBytes = getTotalRxBytes();<br>
 * lastTimeStamp = System.currentTimeMillis();<br>
 * new Timer().schedule(task, 1000, 2000); // 1s后启动任务,每2s执行一次<br>
 * TimerTask task = new TimerTask();
 */
public class NetSpeed {
    private static final String TAG = NetSpeed.class.getSimpleName();
    private long lastTotalRxBytes = 0;
    private long lastTimeStamp = 0;

    public String getNetSpeed(int uid) {
        long nowTotalRxBytes = getTotalRxBytes(uid);
        Log.i(TAG, "nowTotalRxBytes  = " + nowTotalRxBytes);
        long nowTimeStamp = System.currentTimeMillis();
        long speed = ((nowTotalRxBytes - lastTotalRxBytes) * 1000 / (nowTimeStamp - lastTimeStamp));//毫秒转换
        lastTimeStamp = nowTimeStamp;
        lastTotalRxBytes = nowTotalRxBytes;
        return String.valueOf(speed) + " kb/s";
    }

    //getApplicationInfo().uid
    public long getTotalRxBytes(int uid) {
        return TrafficStats.getTotalRxBytes() == TrafficStats.UNSUPPORTED ? 0 : (TrafficStats.getTotalRxBytes() / 1024);//转为KB
    }
}

相关文章

  • Android 获取当前网速

    参考链接:Android Studio打包arr包并导入Unity中参考链接:Unity中调用Android方法 ...

  • iOS 获取当前网速

    首先需要开启一个定时器,每隔1S获取一次当前网速 然后开始获取网速: 引入头文件: 相关代码: 这里我选择使用lo...

  • Android-获取当前应用根目录

    一:获取 Android 当前应用内部私有根目录 二:获取 Android 当前应用外部公共根目录

  • Android获取实时网速

    private long rxtxTotal =0;private DecimalFormat showFloat...

  • Android Tip : Android 获取当前Activi

    【Android Tip】Android 获取当前Activity对象的方式:背景:(当你不能使用this获取Ac...

  • 网速小测试

    测试网速一个网速小测试就够了 介绍: 网速小测试是一个测试您当前网速的工具,您可以通过网速小测试,判断当前网速再什...

  • 7.0以上拍照崩溃问题

    /获取当前系统的android版本号/int currentapiVersion = android.os.Bui...

  • 获取当前链接的蓝牙设备

    获取当前链接的蓝牙设备 目前Android提供的API只能获取已经链接的设备,但是不能获取当前蓝牙链接的设备。利用...

  • 查看当前网速

    watch -n 1 "/sbin/ifconfig wlan0 | grep bytes"

  • Android 获取当前电量

    在浏览 Flutter 的示例代码中发现一一个比较好的写法。 对于 Android 5.x 及以上的版本 可以通过...

网友评论

      本文标题:Android 获取当前网速

      本文链接:https://www.haomeiwen.com/subject/nuwtjktx.html