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

Я работаю над исследованием использования данных 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());
    }
}

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


person madhu makwana    schedule 28.06.2018    source источник
comment
Пожалуйста, проверьте мой ответ @madhu   -  person Wess    schedule 29.06.2018


Ответы (1)


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

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

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

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

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

long bytesTransferred = stopBytes - startBytes;

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

person Wess    schedule 28.06.2018
comment
Спасибо, это было просто, но я не мог найти это, спасибо, приятель... :) - person madhu makwana; 02.07.2018