zoukankan      html  css  js  c++  java
  • Android开发——流量统计

    1. 获取应用UID

    在设备的proc目录下我们可以看到一些比较熟悉的目录/文件,比如data,system,cpuinfo(获取CPU信息)等,其中uid_stat的各个以应用Uid命名的目录下,便存储该应用的流量信息,包括上传和下载两个value,value/1024/1024即为MB)。因此我们需要拿到应用的Uid。

    Uid是一个应用在手机里的唯一标识,一旦安装,便不会修改。通过pm的getInstalledPackages方法获取到的PackageInfo集合里的每一个对象,都可以通过拿到该应用的Uid。

    int Uid = packInfo.applicationInfo.uid;

    2. 通过读取文件即可获取某个应用的流量信息

    拿到文件对象很简单,代码如下,通过简单的文件流操作即可完成数据的获取。这里就不具体演示了。

    File file_rcv = new File("/proc/uid_stat/" + uid + "/tcp_rcv");
    File file_snd = new File("/proc/uid_stat/" + uid + "/tcp_snd");
    注意在文件里的数据是实时更新的,但是如果关机开机,那么文件里的数据是被清零的。因此单纯的拿到第二天0点的流量信息减去第一天0点的流量信息,但是由于用户中午有开关机行为,那么就会出错。

    所以市面上的软件就是每隔几分钟就去获取一次流量信息。这样做就比较精准一些。


    3. Android2.3后Google封装了该功能

    由于流量统计等功能比较常用,Android2.3之后,Google便封装了上述过程,提供了相应的API。

    参数当然也是应用的Uid。API使用演示如下。

    //获取上传的流量值,返回为Byte类型
    long tx = TrafficStats.getUidTxBytes(Uid);
    //获取下载的流量值,返回为Byte类型
    long rx = TrafficStats.getUidRxBytes(Uid);
    建议使用系统提供的API,便可以很简单的获取到某个应用的流量情况。


  • 相关阅读:
    Silverlight 4中把DataGrid数据导出Excel
    C#正则的委托和lambda表达式用法
    C#简单的写日志方法
    GAE上传失败
    asp.net后台进程做定时任务
    ASP.NET页面生命周期描述
    巴士电台新版发布
    jQuery 1.51.7一些值得注意的更新
    wxPython应用心得
    Ajax保留浏览器历史的两种解决方案(Hash&Pjax)[转]
  • 原文地址:https://www.cnblogs.com/qitian1/p/6461607.html
Copyright © 2011-2022 走看看