源码简介
在网上找到的一个小例子,可以统计每个应用的网络流量,区分移动网络与WIFI 技术点: 使用TrafficStats记录流量变化 使用Service,BroadcastReceiver监控网络状态变化 使用sqlite记录各个应用已用流量数据(只能统计应用安装后使用的流量,之前用掉的不能统计)。
源码运行截图
代码片段:
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- txtView = (TextView) findViewById(R.id.textView1);
- Intent intent = new Intent(MainActivity.this, TrafficService.class);
- bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
- dbManager = new DbManager(this);
- findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- if (trafficService == null) {
- txtView.setText("服务未绑定");
- } else {
- trafficService.logRecord();
- Map<string, trafficinfo=""> list = dbManager.queryTotal();
- StringBuilder sb = new StringBuilder();
- for (TrafficInfo info : list.values()) {
- sb.append(info.appName + " - 流量信息:\r\n");
- sb.append(
- "移动网络接收的流量"
- + Formatter.formatFileSize(
- MainActivity.this,
- info.mobileRx)).append("\r\n");
- sb.append(
- "移动网络发送的流量"
- + Formatter.formatFileSize(
- MainActivity.this,
- info.mobileTx)).append("\r\n");
- sb.append(
- "WIFI接收的流量"
- + Formatter.formatFileSize(
- MainActivity.this, info.wifiRx))
- .append("\r\n");
- sb.append(
- "WIFI发送的流量"
- + Formatter.formatFileSize(
- MainActivity.this, info.wifiTx))
- .append("\r\n");
- sb.append("--------------------").append("\r\n");
- txtView.setText(sb);
- }
- }
- }
- });
- }</string,>
源码链接:http://down.51cto.com/900943