主要讲述关于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 />

结束,希望对大家有所帮助~

android App流量统计相关推荐

  1. android app 流量统计

    https://blog.csdn.net/yzy9508/article/details/48300265 | android 数据流量统计 - CSDN博客 https://blog.csdn.n ...

  2. android tun0 流量统计,Android应用流量统计——NetworkStatsManager使用-Go语言中文社区...

    在没有Root的情况下,Android应用流量统计在6.0之前一直没有太好的办法,官方虽然提供了TrafficStats,但其主要功能是设备启动以来流量的统计信息,和时间信息无法很好的配合.最近再看T ...

  3. android tun0 流量统计,Android应用流量统计——NetworkStatsManager使用(示例代码)

    在没有Root的情况下,Android应用流量统计在6.0之前一直没有太好的办法,官方虽然提供了TrafficStats,但其主要功能是设备启动以来流量的统计信息,和时间信息无法很好的配合.最近再看T ...

  4. spark企业经典案例之手机app流量统计

    spark企业经典案例之手机app流量统计,本课程是基于企业真实项目案例中的一个模块为背景讲解,此业务涉及spark统计,然后通过phpweb进行读取数据,最终通过手机端展示,根据公司案例抽取出来的模 ...

  5. 深入浅出Android App耗电量统计

    原文出处:http://www.cnblogs.com/hyddd/p/4402621.html 在Android统计App耗电量比较麻烦,直至Android 4.4,它仍没公开"电量统计& ...

  6. android 双卡流量统计,android流量统计

    android流量统计 (2012-07-31 12:28:34) 标签: 杂谈 研究过一段时间的android流量统计 发个自己的总结帖 1 android有一个TrafficStats类可以直接获 ...

  7. Android:全面详细的解析Android数据流量统计流程与分析方法(流量检测、流量监控、流量提示)相关类PhoneStateListener,dcTracker,TrafficStats

    作者:GentlemanTsao https://blog.csdn.net/GentelmanTsao 每篇一格言 Stay hungry,stay foolish! --Steve Jobs 文章 ...

  8. android 数据流量统计

    TrafficStats Java层流量统计接口. 全局接口提供从系统启动以来所有网络及mobile网络的发送接收数据统计 对每个application(实际以UID划分),提供从系统启动以来所有网络 ...

  9. android取流量统计,Android 统计应用流量的使用情况

    Android 获取应用流量的使用情况有两种方法 TrafficStats NetworkStatsManager 是Android 6.0(API23)中新增加的类 这次我们使用的是第二种方法,记录 ...

最新文章

  1. python 归一化_只需 45 秒,Python 给故宫画一组手绘图!
  2. TensorFlow2.0 系列开篇: Windows下GPU版本详细安装教程
  3. JS重复引用也会导致错误
  4. imp.load_module(#39_pywrap_tensorflow_internal#39
  5. python文件批量改名_python文件批量重命名
  6. 初识Hadoop入门介绍
  7. import matplotlib.pyplot as plt
  8. Windows下Nginx源码编译指南
  9. 关于微信小程序图标icon的五种实现方案
  10. 每日学习笔记(12)
  11. 页面关闭时postback,导致IE假死的分析
  12. 计算机储位分配,仓库储位分配的基本思路与原则
  13. 美术基础——角色设计
  14. 【软件工程】实验九 建立动态模型--自行车租赁管理系统
  15. 谈谈对springioc的理解
  16. 用HEdit解决因修改用户文件夹名在打开pip时遇到Fatal error in launcher: Unable to create process using 的问题
  17. 1.Redis面试宝典
  18. 痛彻心扉:学了半年 Python,还是找不到工作!
  19. Git配置远程仓库(密匙链接)
  20. Electron 使用Pepper Flash插件

热门文章

  1. 军用大数据 - Spark机器学习
  2. [网络安全课设]基于JAVA的系统端口扫描软件设计实现(java代码+IDEA+UI图形界面+实验报告)
  3. 程序员就非要TNND科班出身?
  4. Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作
  5. SQL server练习题
  6. 一文搞懂导航电文(以Rinex3.04为例)
  7. 绘制个性书籍标签以及保存或打印标签(C#)
  8. OpenFOAM v9 postProcessing
  9. 3.【CSS复合选择器、元素显示模式display、背景background所有】 简洁版小米侧边栏案例
  10. openwrt 设置路由器定时重启 计划任务