Android應用源碼之流量監控
在網上找到的一個小例子,可以統計每個應用的網絡流量,區分移動網絡與WIFI 技術點: 使用TrafficStats記錄流量變化 使用Service,BroadcastReceiver監控網絡狀態變化 使用sqlite記錄各個應用已用流量數據(只能統計應用安裝后使用的流量,之前用掉的不能統計)。
源碼簡介
在網上找到的一個小例子,可以統計每個應用的網絡流量,區分移動網絡與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
責任編輯:chenqingxiang
來源:
網絡整理