android 流量统计实现思路


首先了解android提供给流量统计的api
对于Android流量统计来说在2.2版中加入了TrafficStats类可以轻松获取,其实本身TrafficStats类也是读取 Linux提供的文件对象系统类型的文本进行解析。
有兴趣的朋友可以读读这个类的源码
android.net.TrafficStats类中,提供了多种静态方法,可以直接调用获取,返回类型均为long型,如果返回等于-1代表 UNSUPPORTED 当前设备不支持统计。
static long getMobileRxBytes() //获取通过Mobile连接收到的字节总数,不包含WiFi
static long getMobileRxPackets() //获取Mobile连接收到的数据包总数,不包含WiFi
static long getMobileTxBytes() //Mobile发送的总字节数
static long getMobileTxPackets() //Mobile发送的总数据包数
static long getTotalRxBytes() //获取总的接受字节数,包含Mobile和WiFi等
static long getTotalRxPackets() //总的接受数据包数,包含Mobile和WiFi等
static long getTotalTxBytes() //总的发送字节数,包含Mobile和WiFi等
static long getTotalTxPackets() //发送的总数据包数,包含Mobile和WiFi等
static long getUidRxBytes(int uid) //获取某个网络UID的接受字节数
static long getUidTxBytes(int uid) //获取某个网络UID的发送字节数
最后再次提醒,TrafficStats类工作在Android 2.2 API Level为8的固件上。如果想支持android8以下的系统请参考TrafficStats源码
这些数据都是从这次开机开始,到查询的时间的流量,关机之后将被清0


如何去设计:
因为每次开机都不一样,所以要设置一个广播接收器接收开机和关机的广播,决定对流量的
初始化工作和保存工作。当然在每次查看流量的时候也要做一次查询和保存工作。
把统计的数据保存到数据库里。


如何设计数据库?
一个数据表记录:每次查询的值,查询的时间,网络类型,网络流量,是否为关机时保存的标志。

每次查询的总流量 = 当次流量 + 所有关机保存的流量;




还可以在程序启动之后开启一个服务,没隔多长时间保存一次。


还有在每天晚上12点(11:59分)的时候做一次保存工作。


还有一次需要注意的是getUidRxBytes(int uid)只能取到所有的数据,包括2g/3g和wifi




以上可能不够完善,欢迎指正

更多相关文章

  1. Android(安卓)--小功能 Android中几种图像特效处理 (一)
  2. Android(安卓)root权限获取大揭秘
  3. Android和Android(安卓)Linux kernel源码获取
  4. 【Android】数据存储之SQLite
  5. android获取GPS位置信息
  6. Android(安卓)apk获取系统权限
  7. 【Android】数据存储之Network
  8. Android(安卓)EditText自动获取焦点并弹出软键盘,解决EditText在
  9. Android获取WIFI 的ssid 方法适配Android9.0

随机推荐

  1. android sqlite3 show all tables
  2. Android中的消息推送
  3. Android学习之路(1) -- APK签名
  4. Android L / 5.0 帮助文档 API21文档 sam
  5. Android 入门文档_Android 4.0后JNI所做
  6. Android(安卓)澶嶄範_Processes and Thre
  7. Android尺寸单位含义及相互换算
  8. Android 蓝牙编程之 Java socket编程
  9. Android Linker 与 SO 加壳技术
  10. 深入解析android log的分析方法(1)