2011年9月13日火曜日

通信量を調べる方法

TrafficStatsクラスを使用することでモバイル(3G)通信と全体の通信量を調べることができる。アプリごとの通信量も調べることができる。

long mobileRxBytes = TrafficStats.getMobileRxBytes();
long mobileTxBytes = TrafficStats.getMobileTxBytes();
long totalRxBytes = TrafficStats.getTotalRxBytes();
long totalTxBytes = TrafficStats.getTotalTxBytes();

ActivityManager am = (ActivityManager)getSystemService(ACTIVITY_SERVICE)
for (RunningAppProcessInfo info : am.getRunningAppProcesses()) {
  long uidRxBytes = TrafficStats.getUidRxBytes(info.uid);
  long uidTxBytes = TrafficStats.getUidTxBytes(info.uid);
}

この内部実装は、/sys/class/net/rmnet0/statistics/もしくは、/sys/class/net/ppp0/statistics/配下のファイルおよび、/proc/uid_stat/[uid]/配下のファイルの値を返しているだけである。そのため、ファイルを直接読み込んでも同じことができる。

0 件のコメント:

コメントを投稿