• 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,便可以很简单的获取到某个应用的流量情况。


  • 相关阅读:
    121. Best Time to Buy and Sell Stock
    分页查询
    ViewPager
    SharedPreferences
    android 动画
    display~
    stringBuffer拼接有规律字符串
    修改placehosder
    this Activity.this Activity.class
    Windows基础编程SDK复习知识点
  • 原文地址:https://www.cnblogs.com/qitian1/p/6461607.html
Copyright © 2020-2023  润新知