首页 > 解决方案 > 如何从特定时间段获取总体(非特定于应用程序)数据使用情况?

问题描述

我正在研究 wifi 数据使用情况并想开发一个程序,例如,当用户单击一个按钮时,设备已经连接到 wifi 将开始计算数据使用情况,在同一个按钮上单击它将停止计算数据使用情况并给我总计开始和停止事件之间的数据使用情况。我已经搜索了许多与此相关的线程,但没有找到我要查找的内容,任何人都可以帮助我,这是我尝试过的。 代码

public class MainActivity extends AppCompatActivity {
    NetworkInfo wifiCheck;
    Button btn1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn1 = (Button)findViewById(R.id.btn1);

        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

            }
        });

        getDataWifiDataUsageInfo();
        ConnectivityManager connectionManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        wifiCheck = connectionManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

        if (wifiCheck.isConnected()) {
            // Do whatever here
            Toast.makeText(MainActivity.this,"WiFi is Connected",Toast.LENGTH_LONG);
        } else {
            Toast.makeText(MainActivity.this,"WiFi is not Connected",Toast.LENGTH_LONG);

        }
    }

    public void checkWiFi(View view) {
        Intent intent = getIntent();
        finish();
        startActivity(intent);
    }




    //get data usage info
    void getDataWifiDataUsageInfo(){
        Log.e("bytes recvd", "" + android.net.TrafficStats.getMobileRxBytes());

        Log.e("Total", "Bytes received" + android.net.TrafficStats.getTotalRxBytes());
    }
}

我希望有人一定会帮助我。寻求帮助。

标签: androidandroid-wifiandroid-trafficstatsandroid-data-usage

解决方案


如果您在单击按钮时已经知道用户已连接到 WiFi(如您所述),则所有网络(发送和接收数据)都将通过 WiFi 连接。因此,当用户单击按钮开始时:

long startBytes = TrafficStats.getTotalRxBytes() + TrafficStats.getTotalTxBytes();

当点击停止按钮时:

long stopBytes = TrafficStats.getTotalRxBytes() + TrafficStats.getTotalTxBytes();

最后,计算开始和停止之间传输的字节数:

long bytesTransferred = stopBytes - startBytes;

有关更多信息,请查看此处此处使用的 TrafficStats 方法。


推荐阅读