0

问题是已知的:当 wifi 启动时,TrafficStats.getMobileRxBytes() 和 getMobileTxBytes() 自 Lollipop ( https://issuetracker.google.com/issues/37009612 ) 返回 0。我找到了一种忽略零值的解决方法,除了在某些设备(例如三星 5G)上,在 wifi 上时,我们得到非 0 值。它只带来 rmnet1 接口值流量(rmnet1 用于 VoLTE,rmnet0 用于普通数据)。

1/ 为什么只在三星设备上?虽然它似乎是由 Android OS 处理的

2/ 三星 5G 设备(至少在三星 S20 上)的另一个观察结果:当 wifi 关闭时,小区计数器(自启动后的所有小区流量:rmnet0 + rmnet1)不一致,有时我们得到一个值 V1,有时得到一个值 V2(不同于V1)

类似的经历?

4

1 回答 1

0

我没有使用过支持 5G 的设备,但据我所知,使用's 对象,我们可以在大约 4 个参数NetworkStats.Bucket的帮助下查询 RxBytes 和 TxBytesquerySummaryForDevice()

  1. 连接(移动数据,WIFI)
  2. 订阅者 ID(对于 OS 10+,我们需要传递 null,对于以前的版本,我们需要使用 传递订阅者 ID TELEPHONY_SERVICE)。
  3. 开始时间
  4. 时间结束。

您可以使用以下代码获取订阅者 ID

private String getSubscriberId(Context context, int networkType) {
        String deviceUniqueIdentifier = null;
        if (ConnectivityManager.TYPE_MOBILE == networkType) {
            TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
            return tm.getSubscriberId();
        }
        return "";
    }

这对我来说得到了 RxBytes 和 TxBytes。

于 2020-10-22T09:30:56.827 回答