Как получить общее (не конкретное приложение) использование данных за определенный период времени? - PullRequest
0 голосов
/ 28 июня 2018

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

0 голосов
/ 28 июня 2018

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

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

и при нажатии кнопки остановки:

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

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

long bytesTransferred = stopBytes - startBytes;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...