当前位置: 首页 > news >正文

顺德品牌网站建设信息在线制作免费生成水印

顺德品牌网站建设信息,在线制作免费生成水印,拍摄网,北京网站建设及推广招聘Android 流量统计最近项目上有一个应用流量统计的功能需要实现,在此总结一下 流量统计架构 在Android9.0之前,流量监控是基于xt_qtaguid模块的,通过读取/proc/net/xt_qtaguid/stats文件内容进行解析获取对应流量数据。 Android9.0之后&…

Android 流量统计

最近项目上有一个应用流量统计的功能需要实现,在此总结一下

流量统计架构

在这里插入图片描述

Android9.0之前,流量监控是基于xt_qtaguid模块的,通过读取/proc/net/xt_qtaguid/stats文件内容进行解析获取对应流量数据。

Android9.0之后,改为基于eBPF的网络监控模块,更加灵活且更易于维护;Android9.0 通过读取/sys/fs/bpf/traffic_uid_stats_map获取数据;Android10.0通过读取/sys/fs/bpf/map_netd_app_uid_stats_map获取数据。

调试查看流量信息:

XXX:/ # dumpsys netd trafficcontrollerTrafficControllerBPF module status: BPF_LEVEL_EXTENDEDmCookieTagMap status: OKmUidCounterSetMap status: OKmAppUidStatsMap status: OKmStatsMapA status: OKmStatsMapB status: OKmIfaceIndexNameMap status: OKmIfaceStatsMap status: OKmConfigurationMap status: OKmUidOwnerMap status: OKCgroup ingress program status: OKCgroup egress program status: OKxt_bpf ingress program status: OKxt_bpf egress program status: OKxt_bpf bandwidth whitelist program status: OKxt_bpf bandwidth blacklist program status: OKBPF map content:mCookieTagMap:mUidCounterSetMap:1001 11073 11002 110046 11000 110016 11076 110037 110056 110019 1mAppUidStatsMap::uid rxBytes rxPackets txBytes txPackets10020 11763 24 15904 371076 324919 1159 208570 132610036 171008 1213 143638 12391051 19271 140 9751 1540 3106517 27677 3158691 2811810019 18591 30 5631 391020 356303 1419 118037 45410045 19345 121 14092 16710037 16511616 13422 13875657 129211000 3623643 35705 3038615 35624mStatsMapA:ifaceIndex ifaceName tag_hex uid_int cnt_set rxBytes rxPackets txBytes txPacketsmStatsMapB:ifaceIndex ifaceName tag_hex uid_int cnt_set rxBytes rxPackets txBytes txPackets3 dummy0 0x0 0 0 0 0 152 21 lo 0x0 1000 1 8232 98 8232 983 dummy0 0x0 1020 0 1527 6 1527 61 lo 0x0 1020 0 1176 6 1176 6mIfaceIndexNameMap:ifaceIndex=8 ifaceName=rmnet_ipa0ifaceIndex=6 ifaceName=sit0ifaceIndex=7 ifaceName=ip6tnl0ifaceIndex=4 ifaceName=ip_vti0ifaceIndex=2 ifaceName=bond0ifaceIndex=11 ifaceName=p2p0ifaceIndex=3 ifaceName=dummy0ifaceIndex=10 ifaceName=wlan0ifaceIndex=5 ifaceName=ip6_vti0ifaceIndex=1 ifaceName=lomIfaceStatsMap::ifaceIndex ifaceName rxBytes rxPackets txBytes txPackets3 dummy0 50949 196 110002 50110 wlan0 4210802 7222 764069 66531 lo 19812096 73362 19812096 73362

查询方法

这里主要介绍一下NetworkStatsManager的相关方法

TrafficStats

  • 获取所有网口总的统计数据
    • static long getTotalRxBytes() //返回设备启动后收到的字节数。
    • static long getTotalRxPackets() //返回设备启动后收到的数据包数量。
    • static long getTotalTxBytes() //返回设备启动后传输的字节数。
    • static long getTotalTxPackets() //返回设备启动后传输的数据包数量。
  • 根据UID获取统计数据
    • static long getUidRxBytes(int uid) //返回设备引导后给定UID收到的字节数。
    • static long getUidRxPackets(int uid) //返回设备启动后给定UID收到的数据包数量。
    • static long getUidTxBytes(int uid) //返回设备启动后收到的字节数。
    • static long getUidTxPackets(int uid) //返回设备启动后传输的数据包数量

NetworkStatsManager

通过UID查询单个应用

  1. 通过包名获取UID
    private static int getUidByPackageName(Context context, String packageName) {int uid = -1;PackageManager packageManager = context.getPackageManager();try {PackageInfo packageInfo = packageManager.getPackageInfo(packageName,PackageManager.GET_META_DATA);uid = packageInfo.applicationInfo.uid;} catch (PackageManager.NameNotFoundException ex) {ex.printStackTrace();}return uid;}
  1. 获取应用使用流量信息
    • 参数描述如下:
      • networkType 查询网络类型 (ConnectivityManager.TYPE_WIFIConnectivityManager.TYPE_MOBILE
      • subscriberId 设备唯一id(android 10及以后设备 获取不了,可不传)
      • startTime 查询指定时间段 开始时间戳
      • endTime 查询指定时间段 结束时间
      • uid 查询设备的Uid
NetworkStatsManager statsManager = (NetworkStatsManager) AccountApplication.getContext().getSystemService(NETWORK_STATS_SERVICE);try (NetworkStats stats = statsManager.queryDetailsForUid(ConnectivityManager.TYPE_MOBILE,null, startTime, endTime, uid)) {NetworkStats.Bucket bucket = new NetworkStats.Bucket();stats.getNextBucket(bucket);totalSize = bucket.getRxBytes() + bucket.getTxBytes();}

问题

在使用queryDetailsForUid方法的过程中,发现获取到的数据为0,通过网上查阅才了解到,需要设置subscribeId为null而不是“”,源码中也有相关说明

  1. queryDetailsForUid(int networkType, String subscriberId,long startTime, long endTime, int uid)

在这里插入图片描述

  1. queryDetailsForUidTagState(int networkType, String subscriberId,long startTime, long endTime, int uid, int tag, int state)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sbCtthh2-1677057537429)(C:\Users\ts\AppData\Roaming\Typora\typora-user-images\image-20230222171356158.png)]

  1. createTemplate(int networkType, String subscriberId)

在这里插入图片描述

这里可以看到传入null进行查询就可以了;

然后是查询APP今日使用流量,发现总是获取为0,后来通过查询时间改为次日即可正常查询出来,very good!

参考连接

  1. (2条消息) android 统计应用流量 NetworkStatsManager_android获取流量使用情况_北极的松树的博客-CSDN博客
  2. Android-流量统计 - Wxy的个人博客 (leo-wxy.github.io)
  3. NetworkStatsManager.java - OpenGrok cross reference for /frameworks/base/core/java/android/app/usage/NetworkStatsManager.java (aospxref.com)
http://www.yayakq.cn/news/408298/

相关文章:

  • 网站后台服务器内部错误百度 营销中心
  • 长沙培训网站制作word无法发布文章到wordpress
  • 贵阳市网站建设商贸公司经营范围
  • 网站名称是什么意思临淄信息港最新招聘
  • 怎么做外贸个人网站北京大型网站建设公司
  • 网站如何做网站解析服装设计就业前景如何
  • 一家专门做原型的网站sem和seo都包括什么
  • 电子商务网站开发实训总结网站色彩代码
  • 北京网站备案的地址唯品会网站页面设计
  • 医院网站实例备案期间的网站打开
  • 自由策划企业网站管理系统破解版网站建设公司的企业特色有哪些
  • 郑州国外网站建设西地那非最佳起效时间
  • wordpress整站生成html保定企业自助建站
  • 青岛网站建设博采网络广州市手机网站建设怎么样
  • 网站建设技术简易留言板大连开发区论坛网
  • 网络文化有限公司网站建设策划书建网页还是网站
  • 中国招标机构哪个网站做的好网站的风格与布局的设计方案
  • 重庆建设定额网站重庆建一科技发展有限公司
  • 滨州网站建设电话网站推广的目标
  • 网站一定备案吗视频剪辑培训机构
  • 张店网站建设yx718公司名称大全二字
  • 阿克苏市建设银行网站怎么创作一个微信小程序
  • 网站优化seo方案搭设企业网站教程
  • php 手机网站 模板googleseo排名公司
  • vscode 网站开发大连高端网页公司
  • 云南网站建设专家西安市建设工程信息网招投标平台
  • 建设跨境电商网站厦门人才网唯一官方网站
  • 乡镇网站建设工作计划自己在线制作logo免费图片
  • 登封市城乡建设路网站重庆网站平台
  • 简洁 网站模板河南做网站联系电话