Я использую класс NetworkStatsManager для получения данных об использовании приложений.
Если указать время запуска 01.01.2018, это означает, что мой телефон разослал 5,4 ГБ.
Если указать 01.01.2017, оно по-прежнему показывает 5,4 ГБ.
Это позволяет мне предположить, что есть какое-то ограничение относительно времени запуска.К сожалению, в документации ничего не говорится об этом.
Итак, сколько времени мы можем вернуться?
Код:
Это код, который извлекает данные с использованием querySummary:
private long[] getBytesSummary(Context context, int networkType, Calendar calendar) {
NetworkStatsManager networkStatsManager = (NetworkStatsManager) context.getSystemService(Context.NETWORK_STATS_SERVICE);
NetworkStats networkStats = null;
try {
networkStats = networkStatsManager.querySummary(
networkType,
Util.getSubscriberId(context, networkType),
calendar.getTimeInMillis(),
System.currentTimeMillis());
} catch (RemoteException e) {
if (debug) Log.e(TAG, "getBytesSummary: " + e.toString());
}
long[] result = new long[2];
long totalRxBytes = 0;
long totalTxBytes = 0;
NetworkStats.Bucket bucket = new NetworkStats.Bucket();
if (networkStats != null) {
while (networkStats.hasNextBucket()) {
networkStats.getNextBucket(bucket);
int uid = bucket.getUid();
long uidRxBytes = bucket.getRxBytes();
long uidTxBytes = bucket.getTxBytes();
if (uidsWithNetworkUsageMap.indexOfKey(uid) < 0) {
long[] uidBytes = new long[2];
uidBytes[0] = uidRxBytes;
uidBytes[1] = uidTxBytes;
uidsWithNetworkUsageMap.put(uid, uidBytes);
} else {
long[] value = uidsWithNetworkUsageMap.get(uid);
value[0] = value[0] + uidRxBytes;
value[1] = value[1] + uidTxBytes;
uidsWithNetworkUsageMap.put(uid, value);
}
totalRxBytes += bucket.getRxBytes();
totalTxBytes += bucket.getTxBytes();
}
networkStats.close();
}
result[0] = totalRxBytes;
result[1] = totalTxBytes;
return result;
}
Как вы можете видеть выше, я даю объект календаря методу.
ЭтоВот как я получаю календарь на текущий год:
public static Calendar getCalendarCurrentYear() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_YEAR, 1);
// for 0-12 clocks
calendar.set(Calendar.HOUR, 0);
calendar.set(Calendar.AM_PM, Calendar.AM);
// for 0-24 clocks
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
// calendar.set(Calendar.YEAR, 2017);
Log.i("DataUsage", "getCalendarCurrentYear: " + calendar.getTime());
return calendar;
}
Возвращает пн 01 января 00:00:00 по Гринвичу + 01: 00 2018.
Если я установлю его сейчас на 2017, результаттакое же, как и для 2018.
Я что-то не так делаю?
РЕДАКТИРОВАТЬ:
Я только что провел какое-то тестирование, ограничение кажется каким-то образом 3 месяца.
Все, что больше 3 месяцев, поскольку время запуска приводит к тому же значению.
Кто-нибудь может подтвердить, что ему удалось заставить его работать на более 3 месяцев с текущего времени ?
Или есть официальная документация, касающаяся этого?