Android 流量统计

Android有两个类可统计流量:

NetworkStatsManager及TrafficStats,如下详细介绍:

一、NetworkStatsManager获取流量信息

1. Bucket querySummaryForDevice(NetworkTemplate template,long startTime, long endTime) 
   查询指定网络某个时间段的总流量
2. Bucket querySummaryForUser(int networkType, String subscriberId, long startTime,long endTime)
	查询指定网络某个时间段所有UID的总流量
3. NetworkStats querySummary(int networkType, String subscriberId, long startTime,long endTime) 
	查询当前UID指定网络某个时间段的总流量
4. NetworkStats queryDetails(int networkType, String subscriberId, long startTime,long endTime) 
	Query network usage statistics details. Result filtered to include only uids belonging to calling user.
5. registerUsageCallback(int networkType, String subscriberId, long thresholdBytes,UsageCallback callback)
	监听指定网络使用流量情况
6. queryDetails分析:
	1. 根据networkType、subscriberId创建NetworkTemplate
	2. 创建NetworkStats
	3. 查询NetworkStats.startUserUidEnumeration
6.1 NetworkStats.startUserUidEnumeration分析
	1. mSession获取:statsService.openSessionForUsageStats(flags, context.getOpPackageName());


数据信息保存在:/data/system/netstats/目录下面,打印出来乱码

二、TrafficStats获取流量信息

1. long getMobileRxBytes()
 	获取移动网络收到的字节总数
2. long getMobileRxPackets()
	获取移动网络收到的数据包总数 
3. long getMobileTxBytes()
   移动网络发送的总字节数,
4.  long getMobileTxPackets()
	移动网络发送的总数据包数 
5.  long getTotalRxBytes()
	获取移动网络和WiFi总的接收字节数
6. long getTotalRxPackets()
	移动网络和WiFi总包
7. long getTotalTxBytes()
	移动网络和WiFi总的发送字节数
8. long getTotalTxPackets()
	移动网络和WiFi总数据包数
9. long getUidRxBytes(int uid)
	获取UID的接受字节数 
10. long getUidTxBytes(int uid)
	获取UID的发送字节数

TrafficStats不能获取准确的时间点流量信息

命令获取流量信息:
1. dumpsys netstats --full --uid --tag
2. dumpsys netstats detail

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值