Взгляните на класс TrafficStats. Для этого вам нужно специально изучить getTotalRxBytes(), getTotalTxBytes(), getMobileRxBytes() и getMobileTxBytes().
Краткий обзор:
getTotalRxBytes = total downloaded bytes
getTotalTxBytes = total uploaded bytes
getMobileRxBytes = only mobile downloaded bytes
getMobileTxBytes = only mobile uploaded bytes
Таким образом, чтобы получить только количество трафика, связанного с WiFi, вам нужно будет получить только общее количество и вычесть мобильный как таковой:
getTotalRxBytes - getMobileRxBytes = only WiFi downloaded bytes
getTotalTxBytes - getMobileTxBytes = only WiFi uploaded bytes
С количеством байтов мы можем переключаться на другие единицы, например мегабайты (МБ):
getTotalRxBytes / 1048576 = total downloaded megabytes
Что касается получения использования за интервал, например за день, поскольку эти методы предоставляют только общее количество (с момента загрузки), вам нужно будет отслеживать начальное число, а затем вычитать, чтобы получить количество байтов, использованных в течение интервала. Итак, в начале дня, например в 00:00, вы отслеживаете общее использование:
startOfDay = getTotalRxBytes + getTotalTxBytes;
Когда наступает конец дня, например, 23:59:59, вы можете вычесть два числа и получить общее использование за этот день:
endOfDay = getTotalRxBytes + getTotalTxBytes;
usageForDay = endOfDay - startOfDay;
Итак, резюме:
- используйте методы, предоставленные классом TrafficStats, чтобы получить общее количество использования Интернета
- вычтите мобильные данные из общего количества, чтобы получить только использование WiFi
- конвертировать байты в любую единицу измерения, которую вы хотите, используя коэффициент преобразования
- сохранить объем использования в начале дня, а затем вычесть объем использования в конце дня, чтобы получить объем использования в этот день
person
Dave Chen
schedule
25.09.2014