安卓专项测试之流量

本文探讨了安卓设备上的流量获取方法,包括读取流量统计文件、使用Android流量统计API以及流量测试工具PerfDog与SoloPi的对比。在华为手机上遇到权限问题和目录缺失的问题,对SoloPi源码进行了部分分析。
摘要由CSDN通过智能技术生成

流量是指连接网络的设备在网络上所产生的数据流量。
一般分为应用运行期间网卡的下行和上行流量

获取流量方法:

1、流量统计文件:读取读取/proc/net/dev文件
在这里插入图片描述
其中 lo 为本地流量, rmnet0为移动流量, wlan0为无线流量

另外网络上还有其他两种本地读取流量的方式
(1)在/sys/class/net/下可以找到相关类别(如rmnet0)的目录.在其子目录statistics下rxbytes和txbytes记录收发流量.
(2)在/proc/uid_stat/{uid}/tcp_rcv记录该uid应用下载流量字节,/proc/uid_stat/{uid}/tcp_snd有该uid应用上传流量字节
但是我的华为手机(1)方式下没有权限,(2)方式下没有uid_stat目录

2、Android流量统计API:
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的发送字节数

3、通过抓包方式 (不做介绍,网上教程的很多)

PerfDog与SoloPi测试结果对比:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下载速率差不多,都在400KB左右(但是SoloPi统计的累计应用上/下 行文件里面显示流量都为0,不知道为什么)

SoloPi源码分析

以累计全局下行流量为例:

RecordPattern pattern = new RecordPattern("累计全局下行流量", "KB", "Network");
pattern.setEndTime(endTime);
pattern.setStartTime(startTime);
result.put(pattern, downloadRecordAll);

数据存储在downloadRecordAll,downloadRecordAll通过getRxAll获取

downloadRecordAll.add(new RecordPattern.RecordItem(System.currentTimeMillis(), getRxAll(), ""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值