2015-04-16 17 views
5

Ich entwickle eine App, die WLAN und mobile Traffic-Statistiken auf Android überprüfen können. Das ist, wie ich die Statistiken erhalten:Get Wifi Verkehrsstatistik Android

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

Leider wifiStats hier scheinen nur mehr als Wi-Fi zu sein, denn selbst wenn ich WiFi auf meinem Smartphone deaktivieren, es mir Tonnen von Daten bekommt. Ich denke, dass getTotalRxBytes() und getTotalTxBytes() zählen Byte gesendet und empfangen auf allen Netzwerkschnittstellen.

Ich suchte viel im Internet, wie man Verkehrsstatistiken nur auf wifi erhält, aber ich kann einen Weg nicht finden.

Ich würde gerne jede Hilfe annehmen.

Antwort

6

Ich hatte vor ein paar Jahren das gleiche Problem und löste das, indem ich die Systemdateien direkt las.

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

Hoffe es hilft!

+0

Danke! Das habe ich gesucht! – AlexSC