1,开启一个服务,每5分钟跑动一次更新流量,用于能够准确记录流量
        每一个小时,更新一次流量,用于清除非本月的流量


2,保存流量的时候,进行判断
        a,若是数据库中保存的   旧流量oldFlow > 文件流量newFlow,说明手机重启过, 保存流量 = 前一次数据库保存流量 + 文件流量

        b,若是数据库中保存的   旧流量oldFlow <= 文件流量newFlow,说明软件消耗了新量,保存流量=oldFlow-newFlow+前一次数据库保存流量

        


/**
 * 获取每个应用的流量信息
 */
public List<FlowInfo> getGPRSData() {

List<FlowInfo> uidList = new ArrayList<FlowInfo>();
PackageManager pm = context.getPackageManager();
List<PackageInfo> packinfos = pm
.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES
| PackageManager.GET_PERMISSIONS);

long newFlow = 0;
long[] oldStandardFlow = null;

String date = TimeUtil.getInstance().getStringDate();

for (PackageInfo info : packinfos) {
FlowInfo uidInfo = new FlowInfo();
String[] premissions = info.requestedPermissions;
if (premissions != null && premissions.length > 0) {
for (String premission : premissions) {
if ("android.permission.INTERNET".equals(premission)) {
int uid = info.applicationInfo.uid;
uidInfo.setUid(uid);
newFlow = Long.valueOf(getSndFlowByUid(uid))
+ Long.valueOf(getRcvFlowByUid(uid));
tableHelp = TableHelp.getInstance(context,
"FlowMonitors.db", 1);
sqlite = tableHelp.getSqliteDatabase();
oldStandardFlow = tableHelp.getOldStandardFlow(sqlite, uid, date); // 保存的旧流量和标准流量
if (oldStandardFlow[0] > newFlow) { // 旧流量和文件中的新流量对比,旧流量较大说明重启了手机,要保存的流量=文件流量+标准流量,旧流量保存为文件流量
uidInfo.setOldFlow(newFlow);
newFlow = oldStandardFlow[1] + newFlow;
uidInfo.setFlow(newFlow);
} else {  //若是文件流量大于旧流量,则标准流量=文件流量-旧流量 + 原始标准流量,旧流量保存为新流量
uidInfo.setOldFlow(newFlow);
newFlow = newFlow - oldStandardFlow[0] + oldStandardFlow[1];
uidInfo.setFlow(newFlow);
}
uidInfo.setDate(date);
uidList.add(uidInfo);
}
}
}
}
return uidList;
}

    

花了1,2周的时间,研究了这样一套流量的监控,不足的地方,多多指教啊!

Android流量监控 思路,想法的更多相关文章

  1. 《UNIX/Linux网络日志分析与流量监控》新书发布

    本书从UNIX/Linux系统的原始日志(Raw Log)采集与分析讲起,逐步深入到日志审计与计算机取证环节.书中提供了多个案例,每个案例都以一种生动的记事手法讲述了网络遭到入侵之后,管理人员开展系统 ...

  2. 《Unix/Linux日志分析与流量监控》书稿完成

    <Unix/Linux日志分析与流量监控>书稿完成 近日,历时3年创作的75万字书稿已完成,本书紧紧围绕网络安全的主题,对各种Unix/Linux系统及网络服务日志进行了全面系统的讲解,从 ...

  3. vue table中使用多选的问题(翻页后如何保存已选项),联动echarts图表实现流量监控

    流量监控项目需求: 根据表格数据,添加多选功能,默认全选,根据已选项更新图表视图 1.表格需要多选 2.要联动图表,所以关键是要利用表格多选的触发回调函数 vue table中使用多选: 很简单,只需 ...

  4. Android性能监控

    Android性能监控 一.搭建Android性能测试环境,参见<Android性能测试之Monkey使用>中内容. 二.启动Android虚拟机,可以通过eclipse启动,也可以通过命 ...

  5. Ubuntu 12.04 nethogs 流量监控查看

    /*************************************************************** * Ubuntu 12.04 流量监控查看 * 说明: * 今天打算从 ...

  6. ELK对nginx日志进行流量监控

    ELK对nginx日志进行流量监控 一.前言 线上有一套ELK单机版,版本为5.2.1.现在想把nginx访问日志接入到elk里,进行各个域名使用流量带宽的统计分析.要把nginx日志传输到elk上, ...

  7. 《Unix/Linux网络日志分析与流量监控》获2015年度最受读者喜爱的IT图书奖

    <Unix/Linux网络日志分析与流量监控>获2015年度最受读者喜爱的IT图书奖.刊登在<中华读书报>( 2015年01月28日 19 版) 我的2015年新作刊登在< ...

  8. Android流量统计TrafficStats类

    对于Android流量统计来说在2.2版中新加入了TrafficStats类可以轻松获取,其实本身TrafficStats类也是读取Linux提供的文件对象系统类型的文本进行解析. android.n ...

  9. 阿里聚安全攻防挑战赛第三题Android PwnMe解题思路

    阿里聚安全攻防挑战赛第三题Android PwnMe解题思路 大家在聚安全挑战赛正式赛第三题中,遇到android app 远程控制的题目.我们今天带你一探究竟,如何攻破这道题目. 一.题目 购物应用 ...

随机推荐

  1. timus1004 最小环()Floyd 算法

    通过别人的数据搞了好久才成功,果然还是不够成熟 做题目还是算法不能融会贯通 大意即找出图中至少3个顶点的环,且将环中点按顺序输出 用floyd算法求最小环 因为floyd算法求最短路径是通过中间量k的 ...

  2. HTTPS通信机制

    概述 使用HTTP协议进行通信时,由于传输的是明文所以很容易遭到窃听,就算是加密过的信息也容易在传输中遭受到篡改,因此需要在HTTP协议基础上添加加密处理,认证处理等,有了这些处理机制的HTTP成为H ...

  3. UVa 10253 (组合数 递推) Series-Parallel Networks

    <训练之南>上的例题难度真心不小,勉强能看懂解析,其思路实在是意想不到. 题目虽然说得千奇百怪,但最终还是要转化成我们熟悉的东西. 经过书上的神分析,最终将所求变为: 共n个叶子,每个非叶 ...

  4. UVa 11584 Partitioning by Palindromes

    题意: 给出一个字符串,求最少能划分成多少个回文子串. 分析: d[i] = min{d[j] + 1 | s[j+1]...s[i]是回文串} d[i]表示前 i 个字符最少能分割的回文子串的个数 ...

  5. SyntaxHighlighter -- 代码高亮插件

    SyntaxHighlighter 下载文件里面支持皮肤匹配. 地址:http://alexgorbatchev.com/SyntaxHighlighter/

  6. BZOJ2086: [Poi2010]Blocks

    题解: 想了想发现只需要求出最长的一段平均值>k即可. 平均值的问题给每个数减去k,判断是否连续的一段>0即可. 然后我们发现如果i<j 且 s[i]<s[j],那么 j 对于 ...

  7. oracle 11g rac 无法自动启动

    如果以上的操作依然不能使数据库资源自动启动,那么参考下面这篇文章修改资源AUTO_START属性. 查看资源状态: crsctl status resource 资源       -p     crs ...

  8. Jquery 弹出提示框输入插件 apprise 修改中文按钮以及使用说明

      apprise的使用非常简单,引入js脚本和css <script type="text/javascript" src="/js/apprise-1.5.fu ...

  9. zoj 1967 Fiber Network/poj 2570

    题意就是 给你 n个点 m条边 每条边有些公司支持 问 a点到b点的路径有哪些公司可以支持 这里是一条路径中要每段路上都要有该公司支持 才算合格的一个公司// floyd 加 位运算// 将每个字符当 ...

  10. java web 学习一

    一.基本概念 1.1.WEB开发的相关知识 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资源分为: 静态web资源( ...