나는 안드로이드에서의 교통량 측정에 대해 조사 중이다. 나는 Galaxy S4를 개발 중이며 분당 1 회 TrafficStats API를 수신하고 누적 된 트래픽 (AKA BaseTraffic)을 SharedPreference에 저장하고 현재 트래픽에서 BaseTraffic을 뺀 값을 데이터베이스에 저장하는 서비스를 프로그래밍했습니다.Android TrafficStats - 크기가 너무 크면 버그가 발생합니까?
짧은 기간 (15 분) 동안 TrafficStats는 큰 값 (분당 1.6GB)과 동일한 값을 반환합니다. 누군가 버그 또는 기타 문제인지 알 수 있습니다. 여기에이 코드를
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 **
을
내 코드는 트래픽을 얻을의 옆에 내 오류 :). 대신> = 대신 사용하십시오. 데이터 또는 무선 랜과의 연결이 끊어지면 제대로 작동합니다.
if (TrafficTracker.getCurrentTraffic() >= preferences.getBaseTraffic().getByteTraffic())