一、实现思路: 
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.  
    }

Android中获取实时网速(2)的更多相关文章

  1. TrafficStats——流量统计类的范例,获取实时网速

    2.3开始android就提供来这个类的API,这样我们就可以方便的用他来实现统计手机流量来.这个类其实也很简单,我贴上他的几个方法,大家一看就知道怎么用了. static long getMobil ...

  2. 【Linux环境编程】获取网卡的实时网速

    在windows以下.我们能够看到360或者是qq安全卫士的"安全球".上面显示实时的网速情况.那么在linux里面怎样获取网卡的实时网速?事实上原理非常easy,读取须要获取网速 ...

  3. Android中获取网页表单中的数据实现思路及代码

    在Android中获取网页里表单中的数据具体实现代码如下,感兴趣的各位可以参考过下哈,希望对大家有所帮助 MainActivity如下: 复制代码 代码如下: package cn.testjavas ...

  4. Android中获取网页表单中的数据

    MainActivity如下: package cn.testjavascript; import java.util.StringTokenizer; import android.os.Bundl ...

  5. proc/net/dev实时网速统计实例【转】

    转自:https://blog.csdn.net/dosthing/article/details/80384541 前言 网络编程是程序连接网络拓展的基础,尤其是在物联网.互联网加等概念火热的当下, ...

  6. URL转Drawable之 Android中获取网络图片的三种方法

    转载自: http://doinone.iteye.com/blog/1074283 Android中获取网络图片是一件耗时的操作,如果直接获取有可能会出现应用程序无响应(ANR:Applicatio ...

  7. android 中获取视频文件的缩略图(非原创)

    在android中获取视频文件的缩略图有三种方法: 1.从媒体库中查询 2. android 2.2以后使用ThumbnailUtils类获取 3.调用jni文件,实现MediaMetadataRet ...

  8. Android中获取应用程序(包)的大小-----PackageManager的使用(二)

    通过第一部分<<Android中获取应用程序(包)的信息-----PackageManager的使用(一)>>的介绍,对PackageManager以及 AndroidMani ...

  9. Android中获取正在运行的应用程序-----ActivityManager.RunningAppProcessInfo类详解

    今天继续讲解关于ActivityManager的使用,通过前面一节的学习,我们学会了如何利用ActivityManager获取系统里 正在运行的进程.本文要讲解的知识点是利用这些进程信息获取系统里正在 ...

随机推荐

  1. Element-ui中为上传组件添加表单校验

    vue所依赖的Element的UI库在使用其中的upload组件时,可能很大几率会遇到这个题,需要给upload组件添加表单校验 大家这里直接看代码就可以 <el-form-item class ...

  2. dart lang 开发环境

    ========================Dart SDK 下载========================Dart SDK 主页: https://dart.dev/toolsDart S ...

  3. oracle 死锁 锁

    [zhuan]今天看群里在讨论数据库死锁的问题,也一起研究了下,查了些资料在这里总结下. 所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将 ...

  4. [视频教程] 灵活配置多版本PHP并存运行

    经常有一些项目需要使用不同版本的PHP运行环境,比如有的老项目需要使用5.3版本,有的新项目比如laravel需要使用7.2以上版本,那么在一台机器上如何多版本PHP并存运行呢 有一种很灵活高效的方式 ...

  5. 最新内核3.4)Linux 设备树加载I2C client adapter 的流程(内核3.4 高通)【转】

    转自:https://blog.csdn.net/lsn946803746/article/details/52515225 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转 ...

  6. Shell命令-用户用户组管理之useradd、usermod

    文件及内容处理 - useradd.usermod 1. useradd:添加用户 useradd命令的功能说明 useradd 命令用于建立用户帐号.useradd 可用来建立用户帐号.帐号建好之后 ...

  7. luoguP4343自动刷题机(二分标准题)

    https://www.luogu.org/problem/P4343 参考博客:https://www.luogu.org/blog/ofnoname/solution-p4343 这真是一语点醒梦 ...

  8. Html学习之十一(CSS选择器的应用一)

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  9. map 基本使用

    package main import "fmt" func main(){ //定义一个map变量,类型为map[int]string,如果使用map一定初始化,make分配空间 ...

  10. Protobuf 文件导入和生成

    build: protoc -I=$(GOPATH)/pkg/mod/github.com/micro/micro@v1.13.1/api/proto -I /Users/lzy/Git/Learn/ ...