Расчетное использование мобильных данных всегда меньше фактического

Я пытаюсь рассчитать использование мобильных данных, поэтому я использую широковещательную рассылку, которая информирует меня о 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));
Другие вопросы по тегам