需求: 统计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流量