之前写了一篇获取网速的博文,但得到的网速数据貌似不准确!唉,可能是单位换算没整明白,也没深入研究。
现在换一种方法来取得网速。用到的是:TrafficStats(流量统计)
(此处只做下行网速统计)
一般放到工具类里,代码:
private static DecimalFormat df = new DecimalFormat("0.00");//格式化输出
public static String showSpeed = "0kb/s";
public static synchronized double getNetworkSpeed(double lastTimeNetData,int interval){
double getNetDatabyte = (double) TrafficStats.getTotalTxBytes();//获取通过所有网络接口接收到的字节总数。
if(lastTimeNetData == 0){
lastTimeNetData = getNetDatabyte;
}
double speed = 0;
try{
speed = (getNetDatabyte - lastTimeNetData) / 1024 / interval;
}catch(Exception e){
Log.d("hzb","-------getNetworkSpeed------"+e.toString());//防止传入的时间间隔为0时报错
}
lastTimeNetData = getNetDatabyte;
showSpeed = df.format(speed)+"kb/s";
return lastTimeNetData;
}
调用的时用Handler:
private double lastTimeNetData = 0;
private Handler mHandler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
switch (msg.what) {
case HANDLER_EVENT_UPDATE_VIDEO_NETWORK_SPEED:
if (mVideoPlayerNetworkSpeed == null)
return false;//mVideoPlayerNetworkSpeed 一个用于显示网速的TextView
else {
lastTimeNetData = Utility.getNetworkSpeed(lastTimeNetData, 2);//时间间隔是2秒
mVideoPlayerNetworkSpeed.setText(Utility.showSpeed);
mHandler.sendEmptyMessageDelayed(
HANDLER_EVENT_UPDATE_VIDEO_NETWORK_SPEED, 2000);//2000毫秒
}
break;
}
return true;
}
});
若有错误,请大神门指出来。要有更好的方法,就更要请大神们指点指点。本屌感激不尽~~~