问题标签 [networkstatsmanager]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - NetworkStatsManager 的查询耗时过长
我正在尝试使用每个应用程序获取过去 30 天使用的流量的统计信息NetworkStatsManager
,因此我编写了如下代码:
返回的结果似乎是正确的,但问题是,查询需要太多时间来响应 -通常是 25 秒- 如果我想同时获得TYPE_WIFI
互联网TYPE_MOBILE
使用情况,它将超过 50 秒,这不是一件好事。那么还有另一种方法可以做到这一点吗?或者我在这里做错了什么导致了这种延迟?先感谢您。
android - NetworkStatsManager 有什么替代品吗?
我正在寻找一种替代方法来获取由 android M+ 上的特定 UID 接收和传输的字节数。
如您所知,[NetworkStatsManager] 提供网络流量统计信息。这些统计数据包括通过所有接口、通过移动接口以及基于每个 UID 发送和接收的字节数以及发送和接收的网络数据包。
但根据文档: [queryDetailForUid] 不能用于在细粒度时间尺度上测量数据使用情况。
在 android M 之前,我们可以读取系统文件,例如:/proc/uid_stat/[pid]/* 文件。
但似乎这个技巧在 android M+ 上不起作用。
那么,NetworkStatsManager 有什么替代方案吗?
android - 如何使用 NetworkStatusManager 或 TrafficStat 在 Android 中获取网络共享和移动热点数据使用情况
我有一个 Android 应用程序,它通过 NetworkStatusManager 显示每个应用程序的数据使用情况,但我无法获取网络共享和移动热点的数据使用情况。我该怎么做?
android - Android NetworkStats.Bucket 数据未更新
我正在构建一个应用程序,它在一段时间内监视应用程序网络数据的使用情况。
在 android 5 上,我对 TrafficStats 没有任何问题,尽管在使用 NetworkStats 的 android 8 上,我总是收到相同的数据。我读过桶每 30 分钟左右刷新一次,所以我尝试听 youtube 大约 1 小时,但数据使用量仍然相同(在 com.google.android.youtube 包中)。
那么,我的问题是,为什么 NetworkStats 总是返回相同的数据?
这是我的代码:
我在 MainActivity 中请求运行时权限,如下所示:
授予权限,我也在 android manifest 中请求它们。
谢谢你的帮助。
android - NetworkStatsManager.querySummaryForDevice; 如何正确指定开始和结束时间以使用 1 秒的间隔?
我正在尝试逐秒收集网络使用情况,而要走的路似乎是 NetworkStatsManager。但是,它收集汇总数据,而我正在逐秒寻找不同的网络使用值,因此我可以跟踪查看当我使用一个应用程序与另一个应用程序时使用量发生了多大的跳跃。我试图将开始时间设置为System.currentTimeMillis()-(60*1000);
和结束时间,System.currentTimeMillis();
但这似乎没有做任何事情。我究竟做错了什么?
android - 是否可以在 Android 中监控特定 WIFI 网络的数据使用情况?
我想使用 Android 设备监控特定 WIFI 网络的数据使用情况。查看 API 的文档,我发现了以下类NetworkStatsManager和UsageStatsManager,但它们似乎都没有帮助我。是否有可能做到这一点?
android - NetworkStatsManager - 最早可能的开始时间是多少?
我正在使用 NetworkStatsManager 类来检索应用程序的数据使用情况。
如果我提供 01.01.2018 作为开始时间,则表明我的手机已发出 5.4 GB。
如果我提供 01.01.2017,它仍然显示 5,4 GB。
这让我假设开始时间存在某种限制。不幸的是,该文档没有提及有关此的任何内容。
那么,我们能回到多少时间呢?
代码:
这是使用 querySummary 检索数据的代码:
正如您在上面看到的,我为该方法提供了一个日历对象。
这就是我获取本年度日历的方式:
这将返回 Mon Jan 01 00:00:00 GMT+01:00 2018。
如果我现在将其设置为 2017,则结果与 2018 相同。
难道我做错了什么?
编辑:
我刚刚做了一些测试,限制似乎是3个月。
任何大于 3 个月的开始时间都会产生相同的值。
任何人都可以确认从当前时间开始使其工作超过 3 个月吗?
或者是否有任何官方文档解决这个问题?
android - NetworkStatsManager:查询时出错
当我实现网络统计历史时,我收到此错误:
原因:java.lang.SecurityException:uid -1 的网络统计历史记录禁止调用者 10160
这是代码:
你有解释吗?
android - 使用 NetworkStatsManager 分别查询两个 sim 卡的数据使用情况
我需要使用 NetworkStatsManager 为整个设备查询双卡手机中两张 sim 卡的数据使用情况,因为需要报告每张 sim 卡的 1 天数据使用情况。因此,我需要使用方法 querySummaryForDevice()。我需要传递订阅 id,我认为每个 sim 应该是不同的。我尝试使用此处提到的订阅管理器解决方案:Android:如何在 Android 中获取两个 SIM 卡的 SIM-ID? 不知何故,从这里获取订阅 id 会返回 0 个字节作为使用的数据。截至目前,我正在使用 TelephonyManager 获取订阅 ID。
android - Android 数据计数器差异(应用总和 < 总数)
我正在尝试了解我仅注意到几个应用程序的数据差异的原因。在 Tidal 和 Apple 音乐中,如果我在听曲目时跳过曲目,我会立即得到所有应用程序数据使用量之和与设备总音量之间 10% 到 15% 的数据差异。
测试用例
通过 Tidal(跳过曲目)执行 36.03MiB,启用数据保护程序以将背景数据限制到最低限度。
Android 数据使用计数器(设置 - 连接 - 数据使用)
全部的
应用
缺失数据
我的数据管理员
对于完全相同的数据测试,我的数据管理器报告相同的值
网络统计管理器
在我的跟踪应用程序中,我将 NetworkStatsManager.QuerySummaryForDevice 用于总容量,并使用存储桶 uid 作为包标识符从 NetworkStatsManager.QuerySummary 构建应用程序总数。这已在几款奥利奥设备上得到证实。
从这里我得到:
QuerySummaryForDevice
查询摘要
缺失数据
因此,相同的结果在获取/查看读数时会出现一些微小的时间差异。
作为第四次确认,我在测试之前和之后提取了 /proc/net/xt_qtaguid/iface_stats_all 和 /proc/net/xt_qtaguid/stats 文件,并且这些数字再次排列在上述方法的几个字节内。
数据包计数数据也遵循相同的模式,总数据使用量和应用程序总和之间缺少约 3000 个,因此我认为这不能归结为应用程序计数器中未跟踪数据包标头。
所以我的问题是:
- 鉴于所有其他应用程序都正确跟踪,在应用程序的总和与总数据之间留下可忽略不计的差距,是否有任何逻辑上的原因导致这些数据丢失?
- 是否有任何系统服务没有被 xt_qtaguid/stats 或 NetworkStatsManager 跟踪导致这种情况?