Android中获取实时网速(2)
一、实现思路:
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
- 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);//更新界面
- }
- }
Android中获取实时网速(2)的更多相关文章
- TrafficStats——流量统计类的范例,获取实时网速
2.3开始android就提供来这个类的API,这样我们就可以方便的用他来实现统计手机流量来.这个类其实也很简单,我贴上他的几个方法,大家一看就知道怎么用了. static long getMobil ...
- 【Linux环境编程】获取网卡的实时网速
在windows以下.我们能够看到360或者是qq安全卫士的"安全球".上面显示实时的网速情况.那么在linux里面怎样获取网卡的实时网速?事实上原理非常easy,读取须要获取网速 ...
- Android中获取网页表单中的数据实现思路及代码
在Android中获取网页里表单中的数据具体实现代码如下,感兴趣的各位可以参考过下哈,希望对大家有所帮助 MainActivity如下: 复制代码 代码如下: package cn.testjavas ...
- Android中获取网页表单中的数据
MainActivity如下: package cn.testjavascript; import java.util.StringTokenizer; import android.os.Bundl ...
- proc/net/dev实时网速统计实例【转】
转自:https://blog.csdn.net/dosthing/article/details/80384541 前言 网络编程是程序连接网络拓展的基础,尤其是在物联网.互联网加等概念火热的当下, ...
- URL转Drawable之 Android中获取网络图片的三种方法
转载自: http://doinone.iteye.com/blog/1074283 Android中获取网络图片是一件耗时的操作,如果直接获取有可能会出现应用程序无响应(ANR:Applicatio ...
- android 中获取视频文件的缩略图(非原创)
在android中获取视频文件的缩略图有三种方法: 1.从媒体库中查询 2. android 2.2以后使用ThumbnailUtils类获取 3.调用jni文件,实现MediaMetadataRet ...
- Android中获取应用程序(包)的大小-----PackageManager的使用(二)
通过第一部分<<Android中获取应用程序(包)的信息-----PackageManager的使用(一)>>的介绍,对PackageManager以及 AndroidMani ...
- Android中获取正在运行的应用程序-----ActivityManager.RunningAppProcessInfo类详解
今天继续讲解关于ActivityManager的使用,通过前面一节的学习,我们学会了如何利用ActivityManager获取系统里 正在运行的进程.本文要讲解的知识点是利用这些进程信息获取系统里正在 ...
随机推荐
- 【西北师大-2108Java】第三次作业成绩汇总
[西北师大-2108Java]第三次作业成绩汇总 熟悉PTA平台线上测试环境: 理解用户自定义类的定义: 掌握对象的声明: 学会使用构造函数初始化对象: 使用类属性与方法的使用掌握使用: 掌握pack ...
- LeetCode 二进制问题
338. Counting Bits(计算小于n的各个数值对应的二进制1的个数) 思路:通过奇偶判断,if i是偶数,a[i]=a[i/2],if i是奇数,a[i]=a[i-1]+1. class ...
- 基于 lstm 的股票收盘价预测 -- python
开始导入 MinMaxScaler 时会报错 “from . import _arpack ImportError: DLL load failed: 找不到指定的程序.” (把sklearn更新下) ...
- ESA2GJK1DH1K升级篇: 阿里云物联网平台 OTA: 关于阿里云物联网平台 OTA 的升级流程
前言 鉴于有些用户直接想使用现成的物联网平台实现 OTA 远程升级 我就写一写这系列的文章 注意:首先大家必须把我自建服务器是如何实现的看明白! 我看了下阿里云提供的,实际上流程和咱自建实现的差别不大 ...
- ubuntu中安装rabbitmq服务并成功启动
在我们使用rabbitmq时,首先要对其进行安装,而后才能对其进行使用 安装 Erlang 由于 RabbitMQ 是采用 Erlang 编写的,所以需要安装 Erlang 语言库.就像 java 需 ...
- ActiveMQ基础使用
概述 ActiveMQ是由Apache出品的,一款最流行的,能力强劲的开源消息总线.ActiveMQ是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,它非常快速,支持多 ...
- Python 数据处理之对 list 数据进行数据重排(为连续的数字序号)
Python 数据处理之对 list 数据进行数据重排(为连续的数字序号) # user ID 序号重新排,即,原来是 1,3,4,6 ,排为 1,2,3,4 # item ID 序号重新排,too ...
- 网易云信技术分享:IM中的万人群聊技术方案实践总结
本文来自网易云信团队的技术分享,原创发表于网易云信公众号,原文链接:mp.weixin.qq.com/s/LT2dASI7QVpcOVxDAsMeVg,收录时有改动. 1.引言 在不了解IM技术的人眼 ...
- Win10+Anaconda+tensorflow-cpu安装教程
基础概念 Python2.x or Python3.x 自从20世纪90年代初Python语言诞生至今,一直在迭代更新,根据出现的时期,可以分为Python2.x和Python3.x两个大版本.其中P ...
- IIS_CVE-2015-1635-HTTP.SYS远程执行代码漏洞复现
CVE-2015-1635-HTTP.SYS远程执行代码漏洞复现 一.漏洞描述 远程执行代码漏洞存在于 HTTP 协议堆栈 (HTTP.sys) 中,当 HTTP.sys 未正确分析经特殊设计的 HT ...