首先,TrafficStats.getTotalRxPackets() https://developer.android.com/reference/android/net/TrafficStats.html#getTotalRxPackets():
返回自设备启动以来接收到的数据包数。
同样是与TrafficStats.getTotalTxPackets() https://developer.android.com/reference/android/net/TrafficStats.html#getTotalTxBytes()
该类对于获取月份统计数据没有帮助。
我建议使用 API 23 的解决方案:
网络统计管理器 https://developer.android.com/reference/android/app/usage/NetworkStatsManager.html
此类可以获取每个设备或每个包的统计信息。对您特别有帮助的是功能:
NetworkStatsManager.querySummaryForDevice() https://developer.android.com/reference/android/app/usage/NetworkStatsManager.html#querySummaryForDevice(int,%20java.lang.String,%20long,%20long)
期望测量开始时间作为第三个参数,结束时间作为第四个参数。
示例项目可以找到here https://github.com/RobertZagorski/NetworkStats。它显示了如何获取访问权限网络统计管理器 https://developer.android.com/reference/android/app/usage/NetworkStatsManager.html请求适当的运行时权限。
该解决方案仅适用于 API 23+。
如果你真的想使用交通统计 https://developer.android.com/reference/android/net/TrafficStats.html然后创建一个服务,该服务将得到以下结果TrafficStats.getTotalRxPackets() https://developer.android.com/reference/android/net/TrafficStats.html#getTotalRxPackets()每小时计算差异,并将其保存在数据库中每天的不同行中。