Я исследую измерение трафика в android. Я разрабатываю Galaxy S4, и я запрограммировал сервис, который забирает API TrafficStats один раз в минуту, сохраняет в SharedPreference накопленный трафик (AKA BaseTraffic) и сохраняет в базе данных разницу между текущим трафиком минус BaseTraffic.Android TrafficStats - Негабаритная ценность - ошибка?
Проблема заключается в том, что в короткие промежутки времени (15 минут) TrafficStats возвращает негативное значение (1,6 ГБ в минуту) и всегда такое же значение. Кто-то знает, если это ошибка или другая проблема.
Мой код следующий за получить трафик:
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())