NetworkStatsManager.queryDetailsForUid 没有在给定的时间间隔内获取正确的数据
NetworkStatsManager.queryDetailsForUid is not getting proper data for given time Interval
1) 我正在检查牛轧糖,我已经有以下权限
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission
android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions"/>
2) 代码片段
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();
}
1) 我正在检查牛轧糖,我已经有以下权限
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission
android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions"/>
2) 代码片段
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();
}