Android, как узнать общее использование данных в Интернете в день через Wi-Fi и мобильный телефон

Как узнать общее использование интернета в день?

Например, в конце дня я использовал 800 МБ, тогда он должен вернуться как «использование Интернета 800 МБ 20 мая 2015 года».

Итак, как я могу определить общее использование данных?

После долгих поисков я смог найти использование данных только при отправке и получении байтов, но не при общем использовании.

А также хочу разделить использование на Wi-Fi и мобильные данные.


person Nirav Mehta    schedule 25.09.2014    source источник


Ответы (1)


Взгляните на класс 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
comment
используете ли вы диспетчер аварийных сигналов или службу намерений для сбора данных в течение всего дня, даже если приложение не находится на переднем плане, - person Srishti Roy; 22.04.2015
comment
Я бы предположил, что этот тип приложения будет работать 24/7 в фоновом режиме. - person Dave Chen; 22.04.2015
comment
TrafficStats очистит все использование данных при перезагрузке устройства, только что отметил это, если вы хотите его использовать. - person Sruit A.Suk; 11.05.2015
comment
Если мобильные данные отключены, TrafficStats возвращает getMobileRxBytes, getMobileTxBytes как 0. Есть ли лучшее решение для этого? - person Swapnika; 10.12.2018