android 获取网络速度

本文介绍了一种通过计算一段时间内的数据变化来获取手机或应用实时网速的方法,并提供了具体的实现代码示例。

显示手机或者应用的实时网速,很多应用都有这块的内容,那么如何获取手机或者应用的实时网速呢?

获取网速的原理是一段时间只能的数据总量除以这段时间,这就是网速了。

获取某一时刻手机的数据总量:

		// 得到整个手机的流量值
		return TrafficStats.getUidRxBytes(getApplicationInfo().uid) == TrafficStats.UNSUPPORTED ? 0
				: (TrafficStats.getTotalRxBytes() / 1024);// 转为KB


获取某一时刻应用的数据总量:

		// 得到当前应用的流量值
		return TrafficStats.getUidRxBytes(getApplicationInfo().uid) == TrafficStats.UNSUPPORTED ? 0 : (TrafficStats
				.getUidRxBytes(getApplicationInfo().uid) / 1024);// 转为KB

现在知道如何获取某一时刻的数据总量,我们就能轻而易举的得到网速了:

	private long lastTotalRxBytes = 0; // 最后缓存的字节数
	private long lastTimeStamp = 0; // 当前缓存时间
	// 循环查询当前网速
	private Runnable runnable = new Runnable() {

		@Override
		public void run() {
			long nowTotalRxBytes = getTotalRxBytes(); // 获取当前数据总量
			long nowTimeStamp = System.currentTimeMillis(); // 当前时间
			// kb/s
			long speed = ((nowTotalRxBytes - lastTotalRxBytes) * 1000 / (nowTimeStamp == lastTimeStamp ? nowTimeStamp : nowTimeStamp
					- lastTimeStamp));// 毫秒转换
			tv.setText(String.valueOf(speed) + "kb/s");
			lastTimeStamp = nowTimeStamp;
			lastTotalRxBytes = nowTotalRxBytes;
			handler.postDelayed(runnable, 1000);// 每1秒执行一次runnable.
		}
	};

	private long getTotalRxBytes() {
		// 得到整个手机的流量值
		return TrafficStats.getUidRxBytes(getApplicationInfo().uid) == TrafficStats.UNSUPPORTED ? 0
				: (TrafficStats.getTotalRxBytes() / 1024);// 转为KB
		// // 得到当前应用的流量值
		// return TrafficStats.getUidRxBytes(getApplicationInfo().uid) ==
		// TrafficStats.UNSUPPORTED ? 0 : (TrafficStats
		// .getUidRxBytes(getApplicationInfo().uid) / 1024);// 转为KB

	}


demo下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值