赞
踩
需求:监测每一个APP的移动数据流量(不包含wifi)
已知:
/** 获取手机通过 2G/3G 接收的字节流量总数 */
TrafficStats.getMobileRxBytes();
/** 获取手机通过 2G/3G 接收的数据包总数 */
TrafficStats.getMobileRxPackets();
/** 获取手机通过 2G/3G 发出的字节流量总数 */
TrafficStats.getMobileTxBytes();
/** 获取手机通过 2G/3G 发出的数据包总数 */
TrafficStats.getMobileTxPackets();
/** 获取手机通过所有网络方式接收的字节流量总数(包括 wifi) */
TrafficStats.getTotalRxBytes();
/** 获取手机通过所有网络方式接收的数据包总数(包括 wifi) */
TrafficStats.getTotalRxPackets();
/** 获取手机通过所有网络方式发送的字节流量总数(包括 wifi) */
TrafficStats.getTotalTxBytes();
/** 获取手机通过所有网络方式发送的数据包总数(包括 wifi) */
TrafficStats.getTotalTxPackets();
/** 获取手机指定 UID 对应的应程序用通过所有网络方式接收的字节流量总数(包括 wifi) */
TrafficStats.getUidRxBytes(uid);
/** 获取手机指定 UID 对应的应用程序通过所有网络方式发送的字节流量总数(包括 wifi) */
TrafficStats.getUidTxBytes(uid);
问题:可以通过后两个方法得到每个APP的流量,但是包含WIFI流量。有一个注意的地方是,这些方法都会在手机重启后清零!!!
思路:利用广播机制,在网络切换WiFi和移动网络的时候计算每个APP的流量。还要在手机关机的时候保持数据。
依旧存在的问题:重新插SIM卡时候会出现流量计算错误。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。