java实时获取android网速_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();
}
//-------------------------------------------------------
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()方法即可 实现
//----------------------------------------------------------------
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);
//更新界面
}
}
java实时获取android网速_Android中获取实时网速(2)相关推荐
- android 常用机型尺寸_Android中获取手机屏幕大小的方法
本文为大家解析Android中如何获取手机屏幕大小,提供一个解决方法,分享给大家供大家参考,具体内容如下 运行效果图: 运行程序后,当我们点击Button按钮时,可以看到下面的效果图: 具体代码: 我 ...
- android获取imei兼容_Android中获取IMEI码的方法
公共请求头 所有HTTP请求中,都包含如下公共请求头(HTTP Header): 名称 类型 是否必需 描述 Accept String 是 接受的返回类型,目前只支持JSON:application ...
- java memcached 存储对象_java – 从Memcache中获取低级别数据存储区实体对象时的慢速反序列化...
事实证明,检索存储内存缓存的低级数据存储实体非常缓慢.由于objectify将实体缓存为低级数据存储区实体类型,因此当使用objectify从memcache中获取许多实体时,这会导致性能不佳. 真正 ...
- java向另一activity输入_Android中调用另一个Activity并返回结果-以模拟选择头像功能为例...
场景 Android中点击按钮启动另一个Activity以及Activity之间传值: 在上面启动Activity和传值之后,怎样获取Acitvity的返回值.下面示例实现点击选择头像按钮,跳转到头像 ...
- android代码 IMEI,Android_Android中获取IMEI码的方法,核心代码:Imei = ((TelephonyManager) - phpStudy...
Android中获取IMEI码的方法 核心代码:Imei = ((TelephonyManager) getSystemService(TELEPHONY_SERVICE)) .getDeviceId ...
- java获取数据库当前时间_java中获取系统的当前时间
转自:http://www.cnblogs.com/Matrix54/archive/2012/05/01/2478158.html 一. 获取当前系统时间和日期并格式化输出: import java ...
- java 获取键盘点击_Java中获取键盘输入值的三种方法介绍
程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!Java没有提供这样的函数也不代表遇到这 ...
- android pcm文件大小_Android中的PCM设备
Android上的应用一般都是通过AudioTrack类来播放音频,通过AudioRecord类来录制音频.AudioTrack类和AudioRecord类是Android Frameworks封装提 ...
- android 按钮换行_android 中组件怎么换行
展开全部 应用中获取会用到需要自动换行的控件,而这并不是一般的线性或者相对布局62616964757a686964616fe78988e69d8331333337613864就能实现的,在此分享下自定 ...
最新文章
- 干货 | 详解对象检测模型中的Anchors
- Docker概述和安装部署
- nfc pm3 模拟加密门禁卡_华为手机NFC的妙用,模拟门禁卡、公交卡、银行卡,电子证件等...
- 面试重点:设计模式(二)——创建模式
- Android动画模式
- 安卓Dialog对话框多次显示而闪退的解决办法
- C语言 文件读写 fputc 函数 - C语言零基础入门教程
- 2048java课程设计报告_软件工程——Java版2048游戏学习报告
- 2020年视频号发展白皮书
- 趣谈 JOIN 操作
- Qt与Visual Assitst X的集成问题
- SpringBoot整合mybatis 配置文件备份
- scanf()接受不同类型的参数的一个例子
- win10安装python27_《win10python27安装教程》 win10怎么安装python
- 同济大学Python程序设计基础 实验二:数据表示和处理
- 《空间分析》——思维导图
- 8.PPP拨号 获取ip地址
- 图像处理用什么神经网络,神经网络图像处理
- Centos7英文操作环境下的中文输入
- 基于CC2530设计的自动晾衣杆
热门文章
- Ubuntu 设置合上笔记本盖子不休眠的方法
- Android实现朋友圈的评论和回复
- 苹果安卓APP下载地址合并为一个二维码
- openfiler修改ip的命令_openfiler模拟ISCSI设备的配置
- gtx1060+linux+双显卡,ubuntu14.04+GTX1060 重新安装显卡驱动
- 中文停用词表整理(1893个)
- python古诗代码案例_用python实现古诗词横板竖版显示 【二维列表的使用】
- 利用ArcGIS创建注记层制作方法及注意事项
- 电路设计_自恢复保险丝参数说明
- tableau无法建立连接_外部服务连接疑难解答 - Tableau