2015-04-16 2 views
5

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

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

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

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

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

ответ

6

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

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; 
} 

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

+0

Спасибо! Вот что я искал! – AlexSC

Смежные вопросы