Как получить общее (не конкретное приложение) использование данных за определенный период времени?
Я работаю над исследованием использования данных 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, используемыми здесь и здесь.