Merge changes from topic "ms16-querysummary" am: b4ac36e28d am: 37c6a5c6cb am: 998d42def7

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1931587

Change-Id: If0d5b7a0ac880d4fc954c12f7b8b4ea945fd32e5
This commit is contained in:
Junyu Lai
2021-12-27 06:21:18 +00:00
committed by Automerger Merge Worker
4 changed files with 73 additions and 25 deletions

View File

@@ -170,16 +170,44 @@ public class NetworkStatsManager {
} }
} }
/** @hide */ /**
public Bucket querySummaryForDevice(NetworkTemplate template, * Query network usage statistics summaries.
long startTime, long endTime) throws SecurityException, RemoteException { *
Bucket bucket = null; * Result is summarised data usage for the whole
NetworkStats stats = new NetworkStats(mContext, template, mFlags, startTime, endTime, * device. Result is a single Bucket aggregated over time, state, uid, tag, metered, and
mService); * roaming. This means the bucket's start and end timestamp will be the same as the
bucket = stats.getDeviceSummaryForNetwork(); * 'startTime' and 'endTime' arguments. State is going to be
* {@link NetworkStats.Bucket#STATE_ALL}, uid {@link NetworkStats.Bucket#UID_ALL},
stats.close(); * tag {@link NetworkStats.Bucket#TAG_NONE},
return bucket; * default network {@link NetworkStats.Bucket#DEFAULT_NETWORK_ALL},
* metered {@link NetworkStats.Bucket#METERED_ALL},
* and roaming {@link NetworkStats.Bucket#ROAMING_ALL}.
* This may take a long time, and apps should avoid calling this on their main thread.
*
* @param template Template used to match networks. See {@link NetworkTemplate}.
* @param startTime Start of period, in milliseconds since the Unix epoch, see
* {@link java.lang.System#currentTimeMillis}.
* @param endTime End of period, in milliseconds since the Unix epoch, see
* {@link java.lang.System#currentTimeMillis}.
* @return Bucket Summarised data usage.
*
* @hide
*/
@NonNull
@WorkerThread
// @SystemApi(client = MODULE_LIBRARIES)
public Bucket querySummaryForDevice(@NonNull NetworkTemplate template,
long startTime, long endTime) {
try {
NetworkStats stats =
new NetworkStats(mContext, template, mFlags, startTime, endTime, mService);
Bucket bucket = stats.getDeviceSummaryForNetwork();
stats.close();
return bucket;
} catch (RemoteException e) {
e.rethrowFromSystemServer();
}
return null; // To make the compiler happy.
} }
/** /**
@@ -323,14 +351,37 @@ public class NetworkStatsManager {
return querySummary(template, startTime, endTime); return querySummary(template, startTime, endTime);
} }
/** @hide */ /**
public NetworkStats querySummary(NetworkTemplate template, long startTime, * Query network usage statistics summaries.
long endTime) throws SecurityException, RemoteException { *
NetworkStats result; * The results will only include traffic made by UIDs belonging to the calling user profile.
result = new NetworkStats(mContext, template, mFlags, startTime, endTime, mService); * The results are aggregated over time, so that all buckets will have the same start and
result.startSummaryEnumeration(); * end timestamps as the passed arguments. Not aggregated over state, uid, default network,
* metered, or roaming.
return result; * This may take a long time, and apps should avoid calling this on their main thread.
*
* @param template Template used to match networks. See {@link NetworkTemplate}.
* @param startTime Start of period, in milliseconds since the Unix epoch, see
* {@link java.lang.System#currentTimeMillis}.
* @param endTime End of period, in milliseconds since the Unix epoch, see
* {@link java.lang.System#currentTimeMillis}.
* @return Statistics which is described above.
* @hide
*/
@Nullable
// @SystemApi(client = MODULE_LIBRARIES)
@WorkerThread
public NetworkStats querySummary(@NonNull NetworkTemplate template, long startTime,
long endTime) throws SecurityException {
try {
NetworkStats result =
new NetworkStats(mContext, template, mFlags, startTime, endTime, mService);
result.startSummaryEnumeration();
return result;
} catch (RemoteException e) {
e.rethrowFromSystemServer();
}
return null; // To make the compiler happy.
} }
/** /**

View File

@@ -32,7 +32,6 @@ import android.net.INetworkStatsSession;
import android.net.NetworkPolicy; import android.net.NetworkPolicy;
import android.net.NetworkPolicyManager; import android.net.NetworkPolicyManager;
import android.net.NetworkTemplate; import android.net.NetworkTemplate;
import android.os.RemoteException;
import android.os.ServiceManager; import android.os.ServiceManager;
import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
@@ -172,7 +171,7 @@ public class DataUsageController {
return bucket.getRxBytes() + bucket.getTxBytes(); return bucket.getRxBytes() + bucket.getTxBytes();
} }
Log.w(TAG, "Failed to get data usage, no entry data"); Log.w(TAG, "Failed to get data usage, no entry data");
} catch (RemoteException e) { } catch (RuntimeException e) {
Log.w(TAG, "Failed to get data usage, remote call failed"); Log.w(TAG, "Failed to get data usage, remote call failed");
} }
return -1L; return -1L;

View File

@@ -18,7 +18,6 @@ package com.android.settingslib.net;
import android.app.usage.NetworkStats; import android.app.usage.NetworkStats;
import android.content.Context; import android.content.Context;
import android.os.RemoteException;
import android.util.Log; import android.util.Log;
import java.util.ArrayList; import java.util.ArrayList;
@@ -54,7 +53,7 @@ public class NetworkCycleChartDataLoader
.setTotalUsage(total); .setTotalUsage(total);
mData.add(builder.build()); mData.add(builder.build());
} }
} catch (RemoteException e) { } catch (RuntimeException e) {
Log.e(TAG, "Exception querying network detail.", e); Log.e(TAG, "Exception querying network detail.", e);
} }
} }
@@ -85,7 +84,7 @@ public class NetworkCycleChartDataLoader
if (bucket != null) { if (bucket != null) {
usage = bucket.getRxBytes() + bucket.getTxBytes(); usage = bucket.getRxBytes() + bucket.getTxBytes();
} }
} catch (RemoteException e) { } catch (RuntimeException e) {
Log.e(TAG, "Exception querying network detail.", e); Log.e(TAG, "Exception querying network detail.", e);
} }
data.add(new NetworkCycleData.Builder() data.add(new NetworkCycleData.Builder()

View File

@@ -20,7 +20,6 @@ import android.app.usage.NetworkStats;
import android.app.usage.NetworkStatsManager; import android.app.usage.NetworkStatsManager;
import android.content.Context; import android.content.Context;
import android.net.NetworkTemplate; import android.net.NetworkTemplate;
import android.os.RemoteException;
import android.util.Log; import android.util.Log;
import androidx.loader.content.AsyncTaskLoader; import androidx.loader.content.AsyncTaskLoader;
@@ -55,7 +54,7 @@ public class NetworkStatsSummaryLoader extends AsyncTaskLoader<NetworkStats> {
public NetworkStats loadInBackground() { public NetworkStats loadInBackground() {
try { try {
return mNetworkStatsManager.querySummary(mNetworkTemplate, mStart, mEnd); return mNetworkStatsManager.querySummary(mNetworkTemplate, mStart, mEnd);
} catch (RemoteException e) { } catch (RuntimeException e) {
Log.e(TAG, "Exception querying network detail.", e); Log.e(TAG, "Exception querying network detail.", e);
return null; return null;
} }