5

如何知道每天的互联网总数据使用量?

例如,在一天结束时我使用了 800mb,那么它应该返回“2015 年 5 月 20 日 800mb 的互联网使用量”。

那么如何检测总数据使用量呢?

经过大量谷歌搜索后,我只能找到发送和接收字节的数据使用情况,而不是总使用情况。

并且还希望将使用量分成 wifi 和移动数据。

4

1 回答 1

7

看一下TrafficStats类。为此,您需要专门查看getTotalRxBytes()getTotalTxBytes()getMobileRxBytes()getMobileTxBytes()

快速概览:

getTotalRxBytes = total downloaded bytes
getTotalTxBytes = total uploaded bytes

getMobileRxBytes = only mobile downloaded bytes
getMobileTxBytes = only mobile uploaded bytes

因此,为了仅获取 WiFi 相关流量的数量,您只需获取总数,然后减去移动设备,如下所示:

getTotalRxBytes - getMobileRxBytes = only WiFi downloaded bytes
getTotalTxBytes - getMobileTxBytes = only WiFi uploaded bytes

有了字节数,我们可以切换到不同的单位,比如兆字节(MB):

getTotalRxBytes / 1048576 = total downloaded megabytes

至于获取某个时间间隔(例如一天)的使用情况,因为这些方法只提供总数(自启动以来),您需要跟踪起始数字,然后减去以获取在一个时间间隔内使用的字节数。因此,在一天开始时,例如上午 12:00:00,您需要跟踪总使用量:

startOfDay = getTotalRxBytes + getTotalTxBytes;

当一天结束时,例如晚上 11:59:59,您可以将这两个数字相减,得到当天的总使用量:

endOfDay    = getTotalRxBytes + getTotalTxBytes;
usageForDay = endOfDay - startOfDay;

所以总结一下:

  • 使用 TrafficStats 类提供的方法来获取互联网使用的总数
  • 从总数中减去移动数据以仅获取 WiFi 使用情况
  • 使用转换比率将字节转换为您想要的任何单位
  • 存储一天开始的使用量,然后减去一天结束的使用量,得到当天的使用量
于 2014-09-25T05:54:48.403 回答