gpt4 book ai didi

android - NetworkStatsManager.queryDetailsForUid 未在给定时间间隔内获取正确的数据

转载 作者:行者123 更新时间:2023-12-02 12:28:30 25 4
gpt4 key购买 nike

1) 我正在检查 Nougat,我已经拥有以下权限

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission
android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions"/>

2) 代码 fragment

    public long getPackageRxBytesWifi() {
NetworkStats networkStats = null;
NetworkStats.Bucket bucket;
long totalData= 0;
try {
networkStats = networkStatsManager.queryDetailsForUid(
ConnectivityManager.TYPE_WIFI,
"",
1488441600 ,
1488902400 ,
packageUid);
} catch (RemoteException e) {
e.printStackTrace();
}

do {
bucket = new NetworkStats.Bucket();
networkStats.getNextBucket(bucket);
Log.i("abc", "Start Time Stamp: " + bucket.getStartTimeStamp());
Log.i("abc", "End Time Stamp: " + bucket.getEndTimeStamp());
totalData= totalData+ bucket.getRxBytes() + bucket.getTxBytes();
}while (networkStats.hasNextBucket());
return totalData;

3)当我给出间隔时开始时间 - 0 结束时间 - System.currentTimeMillis(),获取正确的数据。但是当我给出其他时间间隔时开始时间 - 1488441600(3 月 2 日) 结束时间 - 1488902400(3 月 7 日 11;30) 上面的方法返回0。并且 bucket.getEndTimeStamp()bucket.getStartTimeStamp() 在 Log 中打印为 0。任何人都知道如何从上述查询中获取特定时间间隔的数据有不对的地方请指正。

最佳答案

在我看来,你实际上是以秒为单位传递的,而它应该以毫秒为单位。下面我将您的时间转换为毫秒。您可以尝试将代码调整为以下内容吗?

try {
networkStats = networkStatsManager.queryDetailsForUid(
ConnectivityManager.TYPE_WIFI,
"",
1488441600000L ,
1488902400000L ,
packageUid);
} catch (RemoteException e) {
e.printStackTrace();
}

关于android - NetworkStatsManager.queryDetailsForUid 未在给定时间间隔内获取正确的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42663555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com