获取安卓wifi流量统计数据

5

我正在开发一款应用程序,可以在安卓设备上检查WiFi和移动流量统计信息。以下是我获取统计信息的方式:

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

很不幸,这里的wifiStats似乎不仅限于wifi,因为即使在我关闭手机上的wifi时,它仍然会获取大量的数据。我认为getTotalRxBytes()getTotalTxBytes()计算的是所有网络接口传输和接收的字节数。

我在网上搜索了很多关于如何仅获取wifi流量统计信息的方法,但我找不到方法。

我将非常高兴地接受任何帮助。

1个回答

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

希望这能帮到你!

谢谢!这就是我在寻找的! - AlexSC
这会抛出一个权限被拒绝的异常。这个方法需要一个已经root过的手机吗? - Madhavan Malolan
我不确定这个答案是否仍然有效,因为安卓系统对访问系统文件的限制变得更加严格了。 - Juan Acevedo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接