android 获取网速2

之前写了一篇获取网速的博文,但得到的网速数据貌似不准确!唉,可能是单位换算没整明白,也没深入研究。

现在换一种方法来取得网速。用到的是: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;
	}
});

若有错误,请大神门指出来。要有更好的方法,就更要请大神们指点指点。本屌感激不尽~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值