java - 获取 wifi 流量统计 android

标签 java android wifi traffic

我正在开发一个应用程序,它允许在 android 上检查 wifi 和移动流量统计信息。这就是我获得统计数据的方式:

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

不幸的是,wifiStats 似乎不仅仅是 wifi,因为即使我在智能手机上禁用 wifi,它也会为我提供大量数据。 我认为 getTotalRxBytes()getTotalTxBytes() 正在计算所有网络接口(interface)上传输和接收的字节数。

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

我很乐意接受任何帮助。

最佳答案

几年前我遇到过同样的问题,通过直接读取系统文件解决了这个问题。

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

希望对您有所帮助!

关于java - 获取 wifi 流量统计 android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29677403/

相关文章:

java - Joda 时间 DateTime 转换为 java.util.Date 奇怪的问题

java - Autowiring 异常

android - 在 Android 屏幕上动态显示字符串文本

java - 如何在android中创建形状并在形状上添加文本和图像?

android - 从首选项 ListView 中删除分隔符

iphone - 如何确定当前连接的 wifi 在 iPhone 或 iPad 中是否安全

java - 使用 Java 检查一个值是否存在于 JSON 对象中

Java PrintWriter 不弹出打印纸

android - 在 Android 上检查是否启用了 Wi-Fi

java - 对 reSTLet 中的多个映射应用相同的过滤器