Как получить данные об использовании на Android как Wi-Fi и мобильных данных?

Мне нужно получить данные об использовании каждого приложения, установленного на мобильном телефоне Android.

Пример: я установил приложение YouTube на свой мобильный, мне нужно получить данные об использовании приложения YouTube по Wi-Fi и мобильным данным.

Исключительный результат:

YouTube - Wifi - 500 МБ.

YouTube - Мобильные данные - 100 КБ

Я пытаюсь использовать TrafficStats API

int mobileTx = TrafficStats.getMobileTxBytes();
int mobileRx = TrafficStats.getMobileRxBytes();
int wifiTx = TrafficStats.getTotalTxBytes() - mobileTx;
int wifiRx = TrafficStats.getTotalRxBytes() - mobileRx;

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

2 ответа

TrafficStats.getUidRxBytes(int uid) а также TrafficStats.getUidTxBytes(int uid) может помочь вам в этой ситуации, так как эти статические методы предоставляют информацию о байтах, полученных и переданных с момента последней загрузки по некоторому UID. Для этого вам нужно найти UID приложения, для которого вам нужны подробности. Чтобы найти UID приложения, вы можете заглянуть в эту тему - Как получить значение UID приложения для Android из списка, отображаемого в счетчике?

Вы можете использовать API getUidTxBytes из класса TrafficStats

long getUidTxBytes (int uid)
added in API level 8
Return number of bytes transmitted by the given UID since device boot. Counts packets across all network interfaces, and always increases monotonically since device boot. Statistics are measured at the network layer, so they include both TCP and UDP usage.
Before JELLY_BEAN_MR2, this may return UNSUPPORTED on devices where statistics aren't available.
Starting in N this will only report traffic statistics for the calling UID. It will return UNSUPPORTED for all other UIDs for privacy reasons. To access historical network statistics belonging to other UIDs, use NetworkStatsManager.

Хотя это также говорит о том, что вам придется использовать NetworkStatsManager для получения истории статистики сети, отличной от вызывающих приложений.

Здесь uid является идентификатором uid этого процесса

Другие вопросы по тегам