7

刚从冰岛度过一个愉快的假期回来,等待我的电话公司的数据漫游账单。我希望尽可能地限制我的流量,但我想提前知道。我使用了非常棒的应用程序NetCounter,但它根本没有测量漫游数据流量。

所以我想构建自己的应用程序来测量漫游数据流量。我有几个布尔值开始(NetworkInfo.IsRoaming()TelephonyManager.isNetworkRoaming()),但我不确定如何测量流量 if true

所以问题是:如何在漫游时测量数据流量?(类似于 API 8 级TrafficStats功能是我所追求的,但对于 API 3 级)。使用的智能手机是三星 Galaxy i7500 (Android 1.6)

谢谢你的时间!

4

2 回答 2

9

方法 1. 解析“/proc/net/dev”。

在我的手机中,它看起来像:

Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
    lo:     712       8    0    0    0     0          0         0      712       8    0    0    0     0       0          0
dummy0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet1:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
rmnet2:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
 wlan0:  146112     423   32    0    0     0          0         0    42460     409    0    0    0     0       0          0

在我的手机中,“rmnet0”行是保存移动线路互联网统计数据的行。我希望它的格式不会因内核版本而异。

方法二:解析“/sys/class/net”。

我想这是推荐的方法。如图所示:http ://www.jaqpot.net/svn/android/netcounter/trunk/src/net/jaqpot/netcounter/service/SysClassNet.java

于 2010-08-10T12:12:49.970 回答
3

评论中提到了几个开源选项:

我目前安装的是3G Watchdog。作者在 AndroLib 上的一些评论表明他不愿意发布源代码,但在社区的一些帮助下,我相信我们都可以合作制作出最好的数据使用应用程序。

我认为最好的解决方案是从 NetMeter 获取代码并在后台运行服务。3G Watchdog 执行此操作(该服务称为net.NetMonitorService)。

于 2010-08-09T19:49:26.803 回答