android_MTK流量统计方法_008

Google在android2.2以上版本提供了android.net.TrafficStats类,来获取wifi,3G数据。

Android 4.0开始引入流量监控的特性。他可以监控所有的数据流量,支持警告和限制流量使用。当超过特定quota值时,会触发notification或者禁止移动网络。流量监控可以追追踪每个应用的历史数据。用户可以限制特定的应用在后台运行时是否可以联网。

通过设备dev_get_stats()返回的rx_bytes和tx_bytes来统计数据流量。新加入的device应该有这样的特性,在dev_get_stats()中返回值不应包括底层的数据。

Android Framework从ConnectivityService中的NetworkStateTracker来为每个network interface统计数据。这样就保证了framework可以具体的分辨每个network interface,包括type和sim卡身份证等。

流量重置的日期设置,一般是在设定日期的end at midnight UTC。当一个月日期不到设定日期时,从下个月1日开始重置,比如2月份没有30日,则从3月1日重新算流量。

DataUsage Tag 是流量监控的一个维度,默认based on the UID。

流量监控主要用到的类

android.net.NetworkStats:
所有活动网络分析的收集,包括了所有网络接口的总结细节,也可以从单个UID的粒度上来分析。在内部将这些分析数据作为一个大表存储,格式和/proc中的数据格式很接近,这种格式特地为内存内的比较进行了优化,持久化存储的时候可以考虑使用NetworkStatsHistory。前台数据,后台数据

具体参见 官方英文文档 要翻墙

MTK支持双卡,因此流量统计需要使用一点不一样的私有接口。

首先跟踪系统源码,具体实现代码位于
packages/app/Settings 里。
实现的类是
com.mediatek.datausage.OverViewTabAdapter

里面有关于wifi和流量的统计,下面剥离下其实现,非完整可用代码

 

//获取网络状态服务
android.net.INetworkStatsService 
mStatsService = INetworkStatsService.Stub.asInterface(
                ServiceManager.getService(Context.NETWORK_STATS_SERVICE));
//打开会话
android.net.INetworkStatsSession mStatsSession = mStatsService.openSession();
//获取wifi的流量情况
android.net.NetworkStatsHistory network = mStatsSession.getHistoryForNetwork(
                    android.net.NetworkTemplate.buildTemplateWifiWildcard(), FIELD_RX_BYTES
                            | FIELD_TX_BYTES);
//...具体计算略
//获取数据流量情况需要获取各自的sim卡
List<SubscriptionInfo> mSublist = android.telephony.SubscriptionManager.from(mContext).getActiveSubscriptionInfoList();
for (SubscriptionInfo subInfo : mSublist) {
String subscriberId = TelephonyManager.from(mContext).getSubscriberId(subInfo.getSubscriptionId());
android.net.NetworkTemplate template = android.net.NetworkTemplate.buildTemplateMobileAll(subscriberId);
android.net.NetworkStatsHistory network = mStatsSession.getHistoryForNetwork(template,
                        FIELD_RX_BYTES | FIELD_TX_BYTES);
//具体计算略...
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值