android App流量统计

23 篇文章 0 订阅
10 篇文章 0 订阅

主要讲述关于android流量的简介,如何使用TrafficStats获取流量,并设计一个完整的APP流量统计,最后深入了解如何通过其它方式更准确地获取流量统计.
android流量简介
  • 流量统计文件:路径/proc/net/dev
打开文件,其中 lo 为本地流量, rmnet0 为3g/2g流量, wlan0 为无线流量.
  • 在/sys/class/net/下 可以找到相关类别(如rmnet0)的目录.在其子目录statistics下游rx_bytes和tx_bytes记录收发流量.
  • 在/proc/uid_stat/{uid}/tcp_rcv记录该uid应用下载流量字节,/proc/uid_stat/{uid}/tcp_snd有该uid应用上传流量字节
TrafficStats学习
  • TrafficStats google develop文档
  • TrafficStats 源文件 查看
  • 重要API:
[mw_shl_code=java,true]static long  getMobileRxBytes()  //获取通过Mobile连接收到的字节总数,不包含WiFi  
static long  getMobileRxPackets()  //获取Mobile连接收到的数据包总数  
static long  getMobileTxBytes()  //Mobile发送的总字节数  
static long  getMobileTxPackets()  //Mobile发送的总数据包数  
static long  getTotalRxBytes()  //获取总的接受字节数,包含Mobile和WiFi等  
static long  getTotalRxPackets()  //总的接受数据包数,包含Mobile和WiFi等  
static long  getTotalTxBytes()  //总的发送字节数,包含Mobile和WiFi等  
static long  getTotalTxPackets()  //发送的总数据包数,包含Mobile和WiFi等   
static long  getUidRxBytes(int uid)  //获取某个网络UID的接受字节数  
static long  getUidTxBytes(int uid) //获取某个网络UID的发送字节数[/mw_shl_code]
备注:TrafficStats类在Android 2.2 API Level(8)之后出现。

设计一个合理的APP流量统计
  • 记录某App开关机流量使用
    因为getUidRxBytes(int uid)和 getUidTxbytes(int uid)记录的是 该uid应用 在手机启动到你使用这个方法时的流量统计.故需要在手机关机时记录你这个程序在这次开关机过程中的使用流量记录.
[mw_shl_code=java,true]public class ShutDownReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
        //在关机时 记录uid应用 本次流量结余
    }
}[/mw_shl_code]
  • 记录Wifi中的流量使用
[mw_shl_code=java,true]public class WifiStateReceiver extends BroadcastReceiver implements ISusoConstants {
@Override
public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
        int wifistate = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_DISABLED);
        if (wifistate == WifiManager.WIFI_STATE_DISABLED) {//如果关闭
            //结余本次wifi过程中 uid应用的 流量
        } else if (wifistate == WifiManager.WIFI_STATE_ENABLED) {
            //记录当前uid应用的流量.
        }
    }
}[/mw_shl_code]

  • 使用每日闹铃统计/开机时判断昨日统计是否完成.
    通过每日结余计算,得出该日APP的总流量以及WIFI流量占用和2g/3g的流量占用.
  • 获取流量代码
    <br />PackageManager pm = context.getPackageManager(); <br />ApplicationInfo ai = pm.getApplicationInfo("com.51zaozao.traffic", PackageManager.GET_ACTIVITIES); <br />long inTraffic = TrafficStats.getUidRxBytes(ai.uid); <br />long outTraffic = TrafficStats.getUidTxBytes(ai.uid); <br />

结束,希望对大家有所帮助~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值