TrafficStats вернул неверное значение - PullRequest
1 голос
/ 24 февраля 2020

Мое Android приложение (работает Android 10) использует статистику сетевого трафика c.

Когда мое устройство подключено к Wi-Fi, TrafficStats.getMobileTxBytes и ... getMobileRxBytes всегда возвращают 0.

Когда оно подключается к сотовой сети, возвращаемые значения выглядят хорошо.

Любое идея или решение?

1 Ответ

0 голосов
/ 14 апреля 2020

Вы используете TrafficStats.getMobileTxByte

Из документов:

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

Как вы говорите:

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

Да, это потому, что когда сотовая сеть выключена, мобильные данные (ячейки) не используются, поэтому 0.

Вы можете использовать это для получения данных используется всем устройством:

val totalBytes = TrafficStats.getTotalRxBytes()

Вы можете использовать нижеприведенное, если хотите получить внеклеточный трафик c:

val nonMobileBytes = TrafficStats.getTotalRxBytes() - TrafficStats.getMobileTxBytes

https://developer.android.com/reference/android/net/TrafficStats#getTotalRxBytes ()

...