一、实现思路: 
1、Android提供有获取当前总流量的方法 
2、上一秒 减去 下一面的流量差便是网速 
3、注意计算 
二、计算网速的工具类:

package imcs.cb.com.viewapplication.utils; import android.content.Context;import android.net.TrafficStats;import android.os.Handler;import android.os.Message; import java.util.Timer;import java.util.TimerTask; /** * Created by Ricky on 2016/10/13. */public class NetWorkSpeedUtils {    private Context context;    private Handler mHandler;     private long lastTotalRxBytes = 0;    private long lastTimeStamp = 0;     public NetWorkSpeedUtils(Context context, Handler mHandler){        this.context = context;        this.mHandler = mHandler;    }     TimerTask task = new TimerTask() {        @Override        public void run() {            showNetSpeed();        }    };     public void startShowNetSpeed(){        lastTotalRxBytes = getTotalRxBytes();        lastTimeStamp = System.currentTimeMillis();        new Timer().schedule(task, 1000, 1000); // 1s后启动任务,每2s执行一次     }     private long getTotalRxBytes() {        return TrafficStats.getUidRxBytes(context.getApplicationInfo().uid) == TrafficStats.UNSUPPORTED ? 0 :(TrafficStats.getTotalRxBytes()/1024);//转为KB    }     private void showNetSpeed() {        long nowTotalRxBytes = getTotalRxBytes();        long nowTimeStamp = System.currentTimeMillis();        long speed = ((nowTotalRxBytes - lastTotalRxBytes) * 1000 / (nowTimeStamp - lastTimeStamp));//毫秒转换        long speed2 = ((nowTotalRxBytes - lastTotalRxBytes) * 1000 % (nowTimeStamp - lastTimeStamp));//毫秒转换         lastTimeStamp = nowTimeStamp;        lastTotalRxBytes = nowTotalRxBytes;         Message msg = mHandler.obtainMessage();        msg.what = 100;        msg.obj = String.valueOf(speed) + "." + String.valueOf(speed2) + " kb/s";        mHandler.sendMessage(msg);//更新界面    }}

  三、使用:

private Handler mHnadler = new Handler(){        @Override        public void handleMessage(Message msg) {            switch (msg.what) {                case 100:                    tv_speed.setText("当前网速: " + msg.obj.toString());                    break;            }            super.handleMessage(msg);        }    };     @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);         tv_speed = (TextView) findViewById(R.id.tv_speed);         new NetWorkSpeedUtils(this,mHnadler).startShowNetSpeed();    }

  参考于:https://blog.csdn.net/xueshao110/article/details/82766390

//-------------------------------------------------------

private long rxtxTotal =0;private DecimalFormat showFloatFormat =new DecimalFormat("0.00");public void updateViewData() {long tempSum = TrafficStats.getTotalRxBytes()+ TrafficStats.getTotalTxBytes();    long rxtxLast = tempSum -rxtxTotal;    double totalSpeed= rxtxLast *1000 /2000d;    rxtxTotal = tempSum;    wangsu.setText("当前网速:" + showSpeed(totalSpeed));  //设置显示当前网速}private String showSpeed(double speed) {String speedString;    if (speed >=1048576d) {speedString =showFloatFormat.format(speed /1048576d) +"MB/s";    }else {speedString =showFloatFormat.format(speed /1024d) +"KB/s";    }return speedString;}作者:一曲烟雨伊人醉链接:https://www.jianshu.com/p/377ffb0f24ad来源:简书简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  然后开启计时器 轮询访问updateViewData()方法即可 实现

参考:https://www.jianshu.com/p/377ffb0f24ad

//----------------------------------------------------------------

https://www.csdn.net/gather_27/MtTakg1sNzQ3MC1ibG9n.html

 

 

  1. package imcs.cb.com.viewapplication.utils;
  2.    
  3.   import android.content.Context;
  4.   import android.net.TrafficStats;
  5.   import android.os.Handler;
  6.   import android.os.Message;
  7.    
  8.   import java.util.Timer;
  9.   import java.util.TimerTask;
  10.    
  11.   /**
  12.   * Created by Ricky on 2016/10/13.
  13.   */
  14.   public class NetWorkSpeedUtils {
  15.   private Context context;
  16.   private Handler mHandler;
  17.    
  18.   private long lastTotalRxBytes = 0;
  19.   private long lastTimeStamp = 0;
  20.    
  21.   public NetWorkSpeedUtils(Context context, Handler mHandler){
  22.   this.context = context;
  23.   this.mHandler = mHandler;
  24.   }
  25.    
  26.   TimerTask task = new TimerTask() {
  27.   @Override
  28.   public void run() {
  29.   showNetSpeed();
  30.   }
  31.   };
  32.    
  33.   public void startShowNetSpeed(){
  34.   lastTotalRxBytes = getTotalRxBytes();
  35.   lastTimeStamp = System.currentTimeMillis();
  36.   new Timer().schedule(task, 1000, 1000); // 1s后启动任务,每2s执行一次
  37.    
  38.   }
  39.    
  40.   private long getTotalRxBytes() {
  41.   return TrafficStats.getUidRxBytes(context.getApplicationInfo().uid) == TrafficStats.UNSUPPORTED ? 0 :(TrafficStats.getTotalRxBytes()/ 1024); //转为KB
  42.   }
  43.    
  44.   private void showNetSpeed() {
  45.   long nowTotalRxBytes = getTotalRxBytes();
  46.   long nowTimeStamp = System.currentTimeMillis();
  47.   long speed = ((nowTotalRxBytes - lastTotalRxBytes) * 1000 / (nowTimeStamp - lastTimeStamp)); //毫秒转换
  48.   long speed2 = ((nowTotalRxBytes - lastTotalRxBytes) * 1000 % (nowTimeStamp - lastTimeStamp)); //毫秒转换
  49.    
  50.   lastTimeStamp = nowTimeStamp;
  51.   lastTotalRxBytes = nowTotalRxBytes;
  52.    
  53.   Message msg = mHandler.obtainMessage();
  54.   msg.what = 100;
  55.   msg.obj = String.valueOf(speed) + "." + String.valueOf(speed2) + " kb/s";
  56.   mHandler.sendMessage(msg); //更新界面
  57.   }
  58.   }

更多相关文章

  1. 【简单的学生管理界面】Android添加简单的日历控件
  2. 解决webview中输入框完成输入隐藏键盘后滑动界面又弹出软键盘问
  3. Android中使用OrmLite来对SQLite数据库进行CRUD(增删改查)解析
  4. android使用activitygroup和Scrollview的方法
  5. TCPDUMP抓取android手机流量包+wireshark分析
  6. Android(安卓)SlidingMenu实现沉浸式状态栏
  7. ActivityGroup返回键获取焦点处理
  8. android退出登陆后,清空之前所有的activity,进入登陆主界面
  9. Android(安卓)调用系统相册选择照片与调用系统相机拍照保存照片

随机推荐

  1. RSA 签名
  2. android利用均衡器显示跳动频谱
  3. Android Clipping
  4. android监听键盘弹出or隐藏方法
  5. android实现拨打电话
  6. Android 支付宝支付密码输入界面
  7. Android "Hell, Testing"
  8. android edittext 显隐密码代码转换两种
  9. [cocos2d-x 学习] Scene(场景)学习
  10. 短信的自动拦截