Android统计流量方法

来源:互联网 发布:淘宝帮忙跑腿 编辑:程序博客网 时间:2024/06/06 02:59

最近好久没写博客了,原因是公司的工作太忙了。但是因为忙,所以能遇到很多问题,这里,我就遇到了一个之前不知道的问题,其实说来也不难。
因为公司是做播放器业务相关的,某一天,运营突然说要统计每次播放所消耗的流量,听到这个消息,我当时是懵逼的,怎么统计?播放器提供这个api不?

看了播放器源码,发现没有(也可能有,只是我没有找到),突然发现android的手机设置里面有统计,难不成android系统自带?百度一下发现,果不其然。

Android对流量的统计通过一个TrafficStats类可以直接获取,而且可以区分是手机流量还是总的流量,但是这些获取的流量都是从一次开机到读取时刻的统计量,要统计播放一次的流量,需要将开始和结束2个值相减。下面是我写的一个列子:
先获取下当前已使用的流量:

        startMobileRx = TrafficStats.getMobileRxBytes();        startMobileTx = TrafficStats.getMobileTxBytes();        startTotalRx = TrafficStats.getTotalRxBytes();        startTotalTx = TrafficStats.getTotalTxBytes();

结束的时候再获取一下:

        long totalRx = (TrafficStats.getTotalRxBytes() - startTotalRx) / 1000;        long totalTx = (TrafficStats.getTotalTxBytes() - startTotalTx) / 1000;        long mobileRx = (TrafficStats.getMobileRxBytes() - startMobileRx) / 1000;        long mobileTx = (TrafficStats.getMobileTxBytes() - startMobileTx) / 1000;

打印下日志:

    Log.i(TAG, "所有网络方式接收的字节流量总数=" + totalRx + "KB"                + "\n所有网络方式发送的字节流量总数=" + totalTx + "KB"                + "\n手机通过 2G/3G/4G 接收的字节流量总数=" + mobileRx + "KB"                + "\n获取手机通过 2G/3G/4G  发出的字节流量总数=" + mobileTx + "KB");
所有网络方式接收的字节流量总数=2137KB所有网络方式发送的字节流量总数=60KB                                                                      手机通过 2G/3G/4G 接收的字节流量总数=0KB                                                                      获取手机通过 2G/3G/4G  发出的字节流量总数=0KB

项目里面需要的是所有网络接口的字节流量,所以就出来结果了,大家也可以试试直接用4g网试试。

这里再把统计方法api都提供出来:

** 获取手机通过 2G/3G 接收的字节流量总数 */       TrafficStats.getMobileRxBytes();       /** 获取手机通过 2G/3G 接收的数据包总数 */       TrafficStats.getMobileRxPackets();       /** 获取手机通过 2G/3G 发出的字节流量总数 */       TrafficStats.getMobileTxBytes();       /** 获取手机通过 2G/3G 发出的数据包总数 */       TrafficStats.getMobileTxPackets();       /** 获取手机通过所有网络方式接收的字节流量总数(包括 wifi) */       TrafficStats.getTotalRxBytes();       /** 获取手机通过所有网络方式接收的数据包总数(包括 wifi) */       TrafficStats.getTotalRxPackets();       /** 获取手机通过所有网络方式发送的字节流量总数(包括 wifi) */       TrafficStats.getTotalTxBytes();       /** 获取手机通过所有网络方式发送的数据包总数(包括 wifi) */       TrafficStats.getTotalTxPackets();       /** 获取手机指定 UID 对应的应程序用通过所有网络方式接收的字节流量总数(包括 wifi) */       TrafficStats.getUidRxBytes(uid);       /** 获取手机指定 UID 对应的应用程序通过所有网络方式发送的字节流量总数(包括 wifi) */       TrafficStats.getUidTxBytes(uid);
1 0
原创粉丝点击