Android 统计Wifi/2G/3G/4G流量

需求: 统计Wifi/2G/3G/4G流量各多少


Issue:

一. 怎么判断2G/3G/4G

系统源码TelephonyManager类里提供了方法,只是隐藏了,所以可以参源码


二.怎么统计

Android 2.2后提供TrafficStats类,用来进行流量统计,具体使用参考手册

这里我用到了

static long  getTotalRxBytes()  //获取总的接受字节数,包含Mobile和WiFi等  

static long  getTotalTxBytes()  //总的发送字节数,包含Mobile和WiFi等  


三.注意事项

1.  android.net.conn.CONNECTIVITY_CHANGE广播,当手机网络类型切换的时候,系统会发送此广播

2. TrafficStats.getTotalRxBytes()和TrafficStats.getTotalTxBytes()方法获取的值是从开机开始记录的


实现方法:

1. 创建TrafficData table, 字段 trafficData(网络变化使用了多少流量), subtype(网络类型), starttime(开始时间), endtime(结束时间)

2. 创建Sharedpreferences, 记录lastSystemTraffic(上次系统的流量大小),subtype(网络类型),startTime

3. 注册DataTrafficReceiver.监听 android.net.conn.CONNECTIVITY_CHANGE广播和关机广播,当网络变化的时候,获取

currentTraffic=TrafficStats.getTotalRxBytes()+TrafficStats.getTotalTxBytes(), 读取保存在SP中的lastSystemTraffic.

上次网络使用流量 durationTraffic=currentTraffic-lastSystemTraffic. 将durationTraffic保存到数据里

并更新SP里的值

4. 手机重启时,重复3步骤,并清空SP里的值



 



Android 统计Wifi/2G/3G/4G流量,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。