Получить статистику трафика Wi-Fi Android

Я разрабатываю приложение, которое позволяет проверять статистику Wi-Fi и мобильного трафика на Android. Вот как я получаю статистику:

long mobileStats = TrafficStats.getMobileRxBytes() + TrafficStats.getMobileTxBytes();
long wifiStats = TrafficStats.getTotalRxBytes() + TrafficStats.getTotalTxBytes() - mobileStats;

К сожалению, wifiStats здесь, похоже, больше, чем Wi-Fi, потому что даже когда я отключаю Wi-Fi на своем смартфоне, я получаю тонны данных. Я думаю, что getTotalRxBytes() и getTotalTxBytes() подсчитывают байты, переданные и полученные на всех сетевых интерфейсах.

Я много искал в Интернете, как получить статистику трафика только по Wi-Fi, но я не могу найти способ.

Я с радостью приму любую помощь.


person AlexSC    schedule 16.04.2015    source источник


Ответы (1)


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

private final String RX_FILE = "/sys/class/net/wlan0/statistics/rx_bytes";
private final String TX_FILE = "/sys/class/net/wlan0/statistics/tx_bytes";

    private long readFile(String fileName){
    File file = new File(fileName);
    BufferedReader br = null;
    long bytes = 0;
    try{
        br = new BufferedReader(new FileReader(file));
        String line = "";
        line = br.readLine();
        bytes = Long.parseLong(line);
    }  catch (Exception e){
        e.printStackTrace();
        return 0;

    } finally{
        if (br != null)
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
    }

    return bytes;
}

Надеюсь, поможет!

person Juan Acevedo    schedule 28.04.2015
comment
Спасибо ! Это то, что я искал! - person AlexSC; 29.04.2015
comment
Это вызывает исключение, в котором отказано в доступе. Требуется ли для этого метода рутированный телефон? - person Madhavan Malolan; 15.03.2018
comment
Я не уверен, что этот ответ больше работает, поскольку Android стал более ограничивающим доступ к системным файлам. - person Juan Acevedo; 15.03.2018