Как получить общее (не конкретное приложение) использование данных за определенный период времени?

Я работаю над исследованием использования данных Wi-Fi и хочу разработать такую ​​программу, как, когда пользователь нажимает на кнопку, устройство уже подключено к Wi-Fi, начинает вычислять использование данных, а при нажатии той же кнопки он прекращает использование вычислительных данных и дает мне общее количество. Использование данных между началом и окончанием события. Я искал много тем, связанных с этим, но не нашел то, что искал, Может ли кто-нибудь помочь мне в этом же, Это то, что я немного попробовал.код

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());
    }
}

Я надеюсь, что кто-то определенно поможет мне. Ищу помощи.

1 ответ

Решение

Если вы уже знаете, что пользователь подключен к WiFi (как вы указали) при нажатии кнопки, все сети (отправка и получение данных) будут проходить через соединение WiFi. Таким образом, когда пользователь нажимает на кнопку, чтобы начать:

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

и когда нажата кнопка остановки:

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

Наконец, чтобы отработать байты, переданные между началом и окончанием:

long bytesTransferred = stopBytes - startBytes;

Для получения дополнительной информации ознакомьтесь с методами TrafficStats, используемыми здесь и здесь.

Другие вопросы по тегам