2015-04-16 17 views
5

Sto sviluppando un'applicazione che consente di controllare le statistiche del traffico wifi e mobile su Android. Ecco come ottenere le statistiche:Ottieni statistiche sul traffico wifi android

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

Purtroppo, wifiStats qui sembra di essere più di wifi solo perché anche quando ho disattivare il WiFi sul mio smartphone, mi viene tonnellate di dati. Penso che getTotalRxBytes() e getTotalTxBytes() contino i byte trasmessi e ricevuti su tutte le interfacce di rete.

Ho cercato molto sul web come ottenere le statistiche sul traffico solo su wifi ma non riesco a trovare un modo.

Accetteremo volentieri qualsiasi aiuto.

risposta

6

Ho avuto lo stesso problema qualche anno fa e ho risolto questo problema leggendo direttamente i file di sistema.

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

Spero che sia d'aiuto!

+0

Grazie! Questo è quello che stavo cercando! – AlexSC