我正在开发一个应用程序,可以在 Android 上检查 wifi 和移动流量统计信息。这就是我获取统计数据的方式:
long mobileStats = TrafficStats.getMobileRxBytes() + TrafficStats.getMobileTxBytes();
long wifiStats = TrafficStats.getTotalRxBytes() + TrafficStats.getTotalTxBytes() - mobileStats;
很遗憾,wifiStats
这里似乎不仅仅是 wifi,因为即使我在智能手机上禁用 wifi,它也会给我带来大量数据。
我觉得getTotalRxBytes()
and getTotalTxBytes()
正在计算所有网络接口上传输和接收的字节数。
我在网上搜索了很多如何仅在 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;
}
希望能帮助到你!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)