`
Darar
  • 浏览: 87854 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何监控android的流量信息

 
阅读更多

最近在测试中经常要去查看一个进程的流量。所以了解了一下这方面的知识!在此总结一下

 

Android流量监控主要是有两种方法:

 

 

一.抓包

这个方法获取的流量更加精准,但是难度应该大点。本人没有了解过,所以在此略过。

 

 

 

二.读取linux本地文件

Android是基于linux的一个操作系统。

在Android中,你用Root Explorer去查看系统文件的话,与流量监控相关的会有这么几个文件



/proc/net/dev这个文件中具体记录的暂时不是非常清楚,可能是整个系统的一个流量情况。


/proc/uid_stat/%d" 和"/proc/uid_stat/%d" %d为进程的UID。这个文件里只有两项数据tcp_rcv和tcp_snd。

看命名大家应该就能看出代表什么,一个代表总的接受字节数,一个代表总的发送字节数。


这两个文件为非标准linux内核文件,由android内核层/kernel/net/Socket.c 的__sock_sendmsg函数负责写入, 用户层套接字通信在内核层最终会调用此函数 (包括本地套接字和网络套接字)。

 

而Android在2.3之前是没有封装响应的流量监控API的。在2.3之后呢,把数据流量监控封装到了Android.net.TrafficStats类中。其原理就是读取上文提到的那几处文件。其中有的方法也是读取的别的文件。

 

其主要的方法

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的发送字节数

 

返回类型均为long型,如果返回等于-1代表 UNSUPPORTED 当前设备不支持统计,可能是因为系统版本低。

 

 

 

getUidRxBytes(int uid)此方法就是根据uid去查找系统中响应的文件,并读取响应的值。


这其中可能遇到的问题是:没有wifi的情况下,各进程获得的getUidRxBytes之和与getMobileRxBytes所返回的值不相等。原因在于getUidRxBytes使读取上文提到的文件。而getMobileRxBytes读取的是sys/class/net/rmnet0/statistics/rx_bytes 和sys/class/net/ppp0/statistics/rx_bytes 。这俩文件。而且在getUidRxBytes返回的值中包含了本地通信的流量,比如本地进程间的socket通信。所以这两个值加起来有所出入!

转至:http://xlover.iteye.com/blog/1358301

分享到:
评论

相关推荐

    (安卓)流量监控App(AndroidStudio).zip

    (安卓)流量监控App(AndroidStudio).zip(安卓)流量监控App(AndroidStudio).zip(安卓)流量监控App(AndroidStudio).zip(安卓)流量监控App(AndroidStudio).zip(安卓)流量监控App(AndroidStudio).zip(安卓)流量监控App...

    Android手机流量监控

    可以使用悬浮窗口监控Android手机流量

    android开发手机流量监控

    在Android平台上进行手机流量监控是开发者常常需要面对的一项任务,特别是在设计应用时,确保应用程序不会过度消耗用户的...所以,对于想要提升自己在Android流量监控方面能力的开发者来说,这是一个非常有价值的资源。

    android 流量监控源码

    在Android平台上,流量监控是一项重要的功能,它可以帮助用户了解自己的数据使用情况,避免超出套餐限制。本源码项目专门针对这一需求,提供了详尽的数据流量和Wi-Fi流量监控功能,并且能够实现对单个应用程序的流量...

    Android手机流量电量监控程序

    在Android平台上,开发一款流量和电量监控程序是一个实用的功能,可以帮助用户更好地管理他们的设备资源。以下是对这个"Android手机流量电量监控程序"源码的详细分析和相关知识点讲解。 首先,我们要了解Android...

    Android流量监控代码

    本文将深入探讨如何实现一个简单的Android流量监控代码,以及如何与应用程序交互,控制其流量消耗。 首先,我们要了解Android系统如何处理网络流量。Android提供了多种API来获取网络状态和统计网络数据。这些API...

    android流量监控项目

    本文将深入探讨“android流量监控项目”的核心知识点,为Android开发者提供宝贵的参考。 首先,我们要理解Android系统架构。Android是基于Linux内核的操作系统,这意味着我们可以利用系统级API来获取网络连接信息。...

    Android应用源码之流量监控

    本文将深入探讨Android应用源码中的流量监控实现,以及如何利用`TrafficStats`类来获取和监控网络流量信息。 首先,`TrafficStats`是Android SDK中的一个类,位于`android.net`包下,它提供了获取和统计网络流量...

    android流量监控统计

    统计每个应用的网络流量,区分移动网络与WIFI 技术点: 使用TrafficStats记录流量变化 使用Service,BroadcastReceiver监控网络状态变化 使用sqlite记录各个应用已用流量数据

    android流量监控_悬浮窗

    本文将深入探讨“android流量监控_悬浮窗”这一主题,讲解如何实现一个能够实时显示网络下载速度的悬浮窗应用,并讨论相关技术细节。 首先,我们要知道在Android系统中,监测网络流量主要涉及两个核心组件:`...

    android各种应用流量监控demo

    此外,为了实时更新流量信息,可以使用`BroadcastReceiver`监听网络状态的变化,并在接收到网络状态改变的广播时更新流量数据。还可以创建一个后台服务,定期检查并更新流量统计。 总的来说,"android各种应用流量...

    Android 流量监控功能

    本文将深入探讨如何实现一个直观且实用的Android流量监控功能。 首先,我们要理解Android系统如何处理网络流量。Android提供了丰富的API,允许开发者获取到网络活动的数据。这些API主要分布在两个核心类中:`...

    android流量监控软件

    本节将基于《Android应用开发深入学习实录》一书中的流量监控软件源码,详细探讨Android流量监控的实现原理和技术细节。 1. **流量统计基础** - **系统接口**:Android提供了一系列API,如`ConnectivityManager`和...

    Android应用源码流量监控流量沙漏瓶

    沙漏流量瓶,针对现在流量监控软件的不精确而推出的,本软件使用了友好,动感的界面,给用户带来一种时尚的气息,本软件使用了独特的算法,使得流量监控更为准确,特别是wifi与数据网络的分开监控,而且能够进行单个...

    (安卓)流量监控App(AndroidStudio)

    (安卓)流量监控App(AndroidStudio)(安卓)流量监控App(AndroidStudio)(安卓)流量监控App(AndroidStudio)(安卓)流量监控App(AndroidStudio)(安卓)流量监控App(AndroidStudio)(安卓)流量监控App(AndroidStudio)(安卓)...

    Android流量网络监控设计(超级实用版)

    《Android流量网络监控设计》 随着Android智能移动设备的广泛应用,网络流量监控变得越来越重要。这一领域的研究旨在帮助用户实时了解并控制设备的网络流量,从而优化数据使用,避免不必要的费用支出。本文针对这一...

    Android App流量统计源码

    在Android系统中,我们可以利用`ConnectivityManager`和`TrafficStats`类来获取网络流量信息。`ConnectivityManager`用于监控网络连接状态,而`TrafficStats`则提供了统计移动网络和WiFi数据流量的方法。通过调用`...

    Android网络流量监控软件源码

    总的来说,这个Android流量监控软件源码涵盖了Android网络编程、系统服务使用、UI设计、数据持久化以及后台服务等多个方面,是学习和实践Android开发的一个综合性项目。通过深入研究和理解,开发者不仅可以掌握网络...

    Android手机流量控制源码

    在Android系统中,控制和监控应用程序的网络流量是一项重要的任务,尤其对于那些需要优化数据使用的应用或者希望提供用户流量消耗报告的应用来说。本项目提供的"Android手机流量控制源码"正是针对这一需求而设计的。...

Global site tag (gtag.js) - Google Analytics