Расчетное использование мобильных данных всегда меньше фактического
Я пытаюсь рассчитать использование мобильных данных, поэтому я использую широковещательную рассылку, которая информирует меня о 3G-соединении Service
считать данные.
Проблема в том, что вычисляемое значение всегда меньше, чем значение, рассчитанное приложением по умолчанию для использования данных Android.
Вот код:
long now = TrafficStats.getMobileRxBytes();
long before = now;
do {
now = TrafficStats.getMobileRxBytes() ;
Diffnow = now - before;
SystemClock.sleep(500);
}while ((cm.getActiveNetworkInfo() != null) && (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE));
Log.i(TAG,"delta = "+(float)Diffnow/(1024*1024));
1 ответ
Я думаю, что я нашел ответ. Чтобы рассчитать использование данных, мы должны рассчитать как преобразованные, так и полученные данные, поэтому я должен изменить свой код следующим образом:
long now = TrafficStats.getMobileRxBytes()+TrafficStats.getMobileTxBytes();
long before = now;
long Diffnow ;
do {
now = TrafficStats.getMobileRxBytes()+TrafficStats.getMobileTxBytes() ;
Diffnow = now - before;
SystemClock.sleep(500);
}while ((cm.getActiveNetworkInfo() != null) && (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE));
Log.i(TAG,"delta = "+(float)Diffnow/(1024*1024));