2013-12-12 2 views
0

Я исследую измерение трафика в android. Я разрабатываю Galaxy S4, и я запрограммировал сервис, который забирает API TrafficStats один раз в минуту, сохраняет в SharedPreference накопленный трафик (AKA BaseTraffic) и сохраняет в базе данных разницу между текущим трафиком минус BaseTraffic.Android TrafficStats - Негабаритная ценность - ошибка?

Проблема заключается в том, что в короткие промежутки времени (15 минут) TrafficStats возвращает негативное значение (1,6 ГБ в минуту) и всегда такое же значение. Кто-то знает, если это ошибка или другая проблема.

excel dump

Мой код следующий за получить трафик:

public class TrafficTracker { 

    public static long getCurrentTraffic() { 
     long traff = 0; 
     traff = (TrafficStats.getTotalRxBytes() + TrafficStats.getTotalTxBytes()); 
     if (traff > 0) { 
      return traff; 
     } else { 
      throw new UnsupportedOperationException("TrafficStats not supported"); 
     } 

    } 

    public static long getTrafficWithOutBase(long baseTraffic) { 
     return TrafficStats.getTotalTxBytes() + TrafficStats.getTotalRxBytes() - baseTraffic; 
    } 
} 

И называем этот код здесь:

if (preferences.getBaseTraffic() != null) { 
    if (TrafficTracker.getCurrentTraffic() > preferences.getBaseTraffic().getByteTraffic()) { 

     TrafficObject trafficObject = new TrafficObject(new Date(calendar.getTimeInMillis()), TrafficTracker.getTrafficWithOutBase(preferences.getBaseTraffic().getByteTraffic())); 
     daoTraffic.create(trafficObject); 

     preferences.setBaseTraffic(new TrafficObject(new Date(System.currentTimeMillis()), preferences.getBaseTraffic().getByteTraffic() + trafficObject.getByteTraffic())); 

    } else {//when stats are reseted    
     TrafficObject trafficObject = new TrafficObject(new Date(calendar.getTimeInMillis()), TrafficTracker.getCurrentTraffic()); 
     daoTraffic.create(trafficObject); 
     preferences.setBaseTraffic(trafficObject);   
    } 

} 

** UPDATE **

я нашел моя ошибка :). Я заменяю> = вместо>. Теперь работает правильно, когда он отключен от данных или Wi-Fi.

if (TrafficTracker.getCurrentTraffic() >= preferences.getBaseTraffic().getByteTraffic()) 

ответ

0

Я нашел свою ошибку :). Я заменяю> = вместо>. Теперь работает правильно, когда он отключен от данных или Wi-Fi.

if (TrafficTracker.getCurrentTraffic() >= preferences.getBaseTraffic().getByteTraffic())