簡體   English   中英

如何使用TrafficStats類在Android中獲取Wifi數據計數器

[英]How to get Wifi data counter in Android using TrafficStats class

我正在使用以下代碼使用“ TrafficStats”類獲取Android中的流量數據

public class TrafficStatisticsDemoActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    TextView infoView = (TextView)findViewById(R.id.traffic_info);
    String info = "";

    info += "Mobile Interface:\n";
    info += ("\tReceived: " + TrafficStats.getMobileRxBytes() + " bytes / " + TrafficStats.getMobileRxPackets() + " packets\n");
    info += ("\tTransmitted: " + TrafficStats.getMobileTxBytes() + " bytes / " + TrafficStats.getMobileTxPackets() + " packets\n");

    info += "All Network Interface:\n";
    info += ("\tReceived: " + TrafficStats.getTotalRxBytes() + " bytes / " + TrafficStats.getTotalRxPackets() + " packets\n");
    info += ("\tTransmitted: " + TrafficStats.getTotalTxBytes() + " bytes / " + TrafficStats.getTotalTxPackets() + " packets\n");

    infoView.setText(info);
}

main.xml中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<TextView  
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/traffic_info"
android:padding="10dip"/>

它返回的值是針對Mobile(我認為是所有網絡的組合)。 有沒有辦法獲得單獨的Wi-Fi和3G價值? 我也注意到在區分中存在很多准確性問題。

        TextView totData = (TextView)findViewById(R.id.totData);

        TextView wifiTot = (TextView)findViewById(R.id.wifitotData);
        TextView wifiTX = (TextView)findViewById(R.id.wifiUpData);
        TextView wifiRX = (TextView)findViewById(R.id.wifiDownData);

        TextView mobileTot = (TextView)findViewById(R.id.mobtotData);
        TextView mobTX = (TextView)findViewById(R.id.mobUpData);
        TextView mobRX = (TextView)findViewById(R.id.mobDownData);

        /*
         * Converting bytes to MB
         */
        long rxBytes = TrafficStats.getTotalRxBytes()/1048576;
        long txBytes = TrafficStats.getTotalTxBytes()/1048576;

        long mobUpload = TrafficStats.getMobileTxBytes()/1048576;
        long mobDown = TrafficStats.getMobileRxBytes()/1048576;

        long wifiUpload = txBytes-(mobUpload);
        long wifiDown = rxBytes-(mobDown);

        wifiRX.setText(Long.toString(wifiDown));
        wifiTX.setText(Long.toString(wifiUpload));
        long wifitot = wifiUpload+wifiDown;
        wifiTot.setText(Long.toString(wifitot));

        mobTX.setText(Long.toString(mobUpload));
        mobRX.setText(Long.toString(mobDown));
        long mobTot = mobUpload+mobDown;
        mobileTot.setText(Long.toString(mobTot));

        totData.setText(Long.toString(wifitot+mobTot));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM