我知道我可以使用以下trafficstats api方法来获取任何给定应用程序的所有网络接口发送和接收的字节数。但是我如何获得仅限移动设备的统计数据?这样我就可以分离移动和wifi数据。
getUidTxBytes(int uid)
获取通过的发送字节数 这个UID的网络。getUidRxBytes(int uid)
获取通过的接收字节数 这个UID的网络。
似乎API缺少这样的东西。以及获得它的其他方式 getUidMobileRxBytes(int uid)
答案 0 :(得分:1)
package com.formation.traficstates;
import android.app.Activity;
import android.app.AlertDialog;
import android.net.TrafficStats;
import android.os.Bundle;
import android.os.Handler;
import android.widget.TextView;
public class TraficstatesActivity extends Activity {
private Handler mHandler=new Handler();;
private long mStartRX;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mStartRX=TrafficStats.getTotalRxBytes();
if (mStartRX == TrafficStats.UNSUPPORTED) {
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Uh Oh!");
alert.setMessage("Your device does not support traffic stat monitoring.");
alert.show();
} else {
mHandler.postDelayed(mRunnable, 1000);
}
}
private final Runnable mRunnable = new Runnable() {
public void run() {
long rxBytes = TrafficStats.getTotalRxBytes()- mStartRX;
TextView RX = (TextView)findViewById(R.id.textViewRX);
RX.setText("\nbytes recreived :"+Long.toString(rxBytes));
}
};
}
答案 1 :(得分:0)
很抱歉,但您只能获取整个设备的每个接口统计信息,而不是每个UID。
您可以通过收集全接口,每UID统计信息和每个接口,整个设备统计信息来估算每个接口,每个UID统计信息,然后假设整个设备的接口比率为大约是该单个UID的比率。对于短时间跨度,这可能相当准确,因为设备只会定期切换接口。