提交 2d2a44f9 编写于 作者: A andrewleo

Fixed: #40 & #19 incorrect network traffic in some high level sdk

上级 88bf84d7
......@@ -20,6 +20,7 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import android.net.TrafficStats;
import android.util.Log;
/**
......@@ -30,6 +31,7 @@ import android.util.Log;
public class TrafficInfo {
private static final String LOG_TAG = "Emmagee-" + TrafficInfo.class.getSimpleName();
private static final int UNSUPPORTED = -1;
private String uid;
......@@ -44,21 +46,34 @@ public class TrafficInfo {
* @return total traffic include received and send traffic
*/
public long getTrafficInfo() {
Log.i(LOG_TAG, "get traffic information");
Log.d(LOG_TAG, "uid===" + uid);
long rcvTraffic = UNSUPPORTED;
long sndTraffic = UNSUPPORTED;
// Use getUidRxBytes and getUidTxBytes to get network traffic,these API
// return both tcp and udp usage
rcvTraffic = TrafficStats.getUidRxBytes(Integer.parseInt(uid));
sndTraffic = TrafficStats.getUidTxBytes(Integer.parseInt(uid));
if (rcvTraffic == UNSUPPORTED || sndTraffic == UNSUPPORTED) {
return UNSUPPORTED;
}
RandomAccessFile rafRcv = null, rafSnd = null;
String rcvPath = "/proc/uid_stat/" + uid + "/tcp_rcv";
String sndPath = "/proc/uid_stat/" + uid + "/tcp_snd";
long rcvTraffic = -1;
long sndTraffic = -1;
try {
rafRcv = new RandomAccessFile(rcvPath, "r");
rafSnd = new RandomAccessFile(sndPath, "r");
rcvTraffic = Long.parseLong(rafRcv.readLine());
sndTraffic = Long.parseLong(rafSnd.readLine());
} catch (FileNotFoundException e) {
rcvTraffic = -1;
sndTraffic = -1;
rcvTraffic = UNSUPPORTED;
sndTraffic = UNSUPPORTED;
} catch (NumberFormatException e) {
Log.e(LOG_TAG, "NumberFormatException: " + e.getMessage());
e.printStackTrace();
......@@ -73,13 +88,12 @@ public class TrafficInfo {
if (rafSnd != null)
rafSnd.close();
} catch (IOException e) {
Log.i(LOG_TAG, "close randomAccessFile exception: " + e.getMessage());
Log.w(LOG_TAG, "Close randomAccessFile exception: " + e.getMessage());
}
}
Log.d(LOG_TAG, "rcvTraffic===" + rcvTraffic);
Log.d(LOG_TAG, "sndTraffic===" + sndTraffic);
if (rcvTraffic == -1 || sndTraffic == -1) {
return -1;
if (rcvTraffic == UNSUPPORTED || sndTraffic == UNSUPPORTED) {
return UNSUPPORTED;
} else
return rcvTraffic + sndTraffic;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册