Loading core/api/module-lib-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -55,6 +55,7 @@ package android.app.usage { public class NetworkStatsManager { method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK}) public void forceUpdate(); method public static int getCollapsedRatType(int); method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK}) public void notifyNetworkStatus(@NonNull java.util.List<android.net.Network>, @NonNull java.util.List<android.net.NetworkStateSnapshot>, @Nullable String, @NonNull java.util.List<android.net.UnderlyingNetworkInfo>); method @NonNull @WorkerThread public android.app.usage.NetworkStats queryDetailsForDevice(@NonNull android.net.NetworkTemplate, long, long); method @NonNull @WorkerThread public android.app.usage.NetworkStats queryDetailsForUidTagState(@NonNull android.net.NetworkTemplate, long, long, int, int, int) throws java.lang.SecurityException; Loading packages/ConnectivityT/framework-t/src/android/app/usage/NetworkStatsManager.java +48 −0 Original line number Diff line number Diff line Loading @@ -1123,4 +1123,52 @@ public class NetworkStatsManager { throw e.rethrowFromSystemServer(); } } /** * Get a RAT type representative of a group of RAT types for network statistics. * * Collapse the given Radio Access Technology (RAT) type into a bucket that * is representative of the original RAT type for network statistics. The * mapping mostly corresponds to {@code TelephonyManager#NETWORK_CLASS_BIT_MASK_*} * but with adaptations specific to the virtual types introduced by * networks stats. * * @param ratType An integer defined in {@code TelephonyManager#NETWORK_TYPE_*}. * * @hide */ @SystemApi(client = MODULE_LIBRARIES) public static int getCollapsedRatType(int ratType) { switch (ratType) { case TelephonyManager.NETWORK_TYPE_GPRS: case TelephonyManager.NETWORK_TYPE_GSM: case TelephonyManager.NETWORK_TYPE_EDGE: case TelephonyManager.NETWORK_TYPE_IDEN: case TelephonyManager.NETWORK_TYPE_CDMA: case TelephonyManager.NETWORK_TYPE_1xRTT: return TelephonyManager.NETWORK_TYPE_GSM; case TelephonyManager.NETWORK_TYPE_EVDO_0: case TelephonyManager.NETWORK_TYPE_EVDO_A: case TelephonyManager.NETWORK_TYPE_EVDO_B: case TelephonyManager.NETWORK_TYPE_EHRPD: case TelephonyManager.NETWORK_TYPE_UMTS: case TelephonyManager.NETWORK_TYPE_HSDPA: case TelephonyManager.NETWORK_TYPE_HSUPA: case TelephonyManager.NETWORK_TYPE_HSPA: case TelephonyManager.NETWORK_TYPE_HSPAP: case TelephonyManager.NETWORK_TYPE_TD_SCDMA: return TelephonyManager.NETWORK_TYPE_UMTS; case TelephonyManager.NETWORK_TYPE_LTE: case TelephonyManager.NETWORK_TYPE_IWLAN: return TelephonyManager.NETWORK_TYPE_LTE; case TelephonyManager.NETWORK_TYPE_NR: return TelephonyManager.NETWORK_TYPE_NR; // Virtual RAT type for 5G NSA mode, see // {@link NetworkStatsManager#NETWORK_TYPE_5G_NSA}. case NetworkStatsManager.NETWORK_TYPE_5G_NSA: return NetworkStatsManager.NETWORK_TYPE_5G_NSA; default: return TelephonyManager.NETWORK_TYPE_UNKNOWN; } } } packages/ConnectivityT/framework-t/src/android/net/NetworkTemplate.java +2 −84 Original line number Diff line number Diff line Loading @@ -48,7 +48,6 @@ import android.os.Build; import android.os.Parcel; import android.os.Parcelable; import android.telephony.Annotation.NetworkType; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.ArraySet; Loading @@ -59,9 +58,7 @@ import com.android.net.module.util.NetworkStatsUtils; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.Arrays; import java.util.Collection; import java.util.Comparator; import java.util.HashSet; import java.util.List; import java.util.Objects; import java.util.Set; Loading Loading @@ -703,7 +700,8 @@ public final class NetworkTemplate implements Parcelable { private boolean matchesCollapsedRatType(NetworkIdentity ident) { return mRatType == NETWORK_TYPE_ALL || getCollapsedRatType(mRatType) == getCollapsedRatType(ident.mRatType); || NetworkStatsManager.getCollapsedRatType(mRatType) == NetworkStatsManager.getCollapsedRatType(ident.mRatType); } /** Loading Loading @@ -746,86 +744,6 @@ public final class NetworkTemplate implements Parcelable { } } /** * Get a Radio Access Technology(RAT) type that is representative of a group of RAT types. * The mapping is corresponding to {@code TelephonyManager#NETWORK_CLASS_BIT_MASK_*}. * * @param ratType An integer defined in {@code TelephonyManager#NETWORK_TYPE_*}. * * @hide */ // TODO: 1. Consider move this to TelephonyManager if used by other modules. // 2. Consider make this configurable. // 3. Use TelephonyManager APIs when available. // TODO: @SystemApi when ready. public static int getCollapsedRatType(int ratType) { switch (ratType) { case TelephonyManager.NETWORK_TYPE_GPRS: case TelephonyManager.NETWORK_TYPE_GSM: case TelephonyManager.NETWORK_TYPE_EDGE: case TelephonyManager.NETWORK_TYPE_IDEN: case TelephonyManager.NETWORK_TYPE_CDMA: case TelephonyManager.NETWORK_TYPE_1xRTT: return TelephonyManager.NETWORK_TYPE_GSM; case TelephonyManager.NETWORK_TYPE_EVDO_0: case TelephonyManager.NETWORK_TYPE_EVDO_A: case TelephonyManager.NETWORK_TYPE_EVDO_B: case TelephonyManager.NETWORK_TYPE_EHRPD: case TelephonyManager.NETWORK_TYPE_UMTS: case TelephonyManager.NETWORK_TYPE_HSDPA: case TelephonyManager.NETWORK_TYPE_HSUPA: case TelephonyManager.NETWORK_TYPE_HSPA: case TelephonyManager.NETWORK_TYPE_HSPAP: case TelephonyManager.NETWORK_TYPE_TD_SCDMA: return TelephonyManager.NETWORK_TYPE_UMTS; case TelephonyManager.NETWORK_TYPE_LTE: case TelephonyManager.NETWORK_TYPE_IWLAN: return TelephonyManager.NETWORK_TYPE_LTE; case TelephonyManager.NETWORK_TYPE_NR: return TelephonyManager.NETWORK_TYPE_NR; // Virtual RAT type for 5G NSA mode, see // {@link NetworkStatsManager#NETWORK_TYPE_5G_NSA}. case NetworkStatsManager.NETWORK_TYPE_5G_NSA: return NetworkStatsManager.NETWORK_TYPE_5G_NSA; default: return TelephonyManager.NETWORK_TYPE_UNKNOWN; } } /** * Return all supported collapsed RAT types that could be returned by * {@link #getCollapsedRatType(int)}. * * @hide */ // TODO: @SystemApi when ready. @NonNull public static final int[] getAllCollapsedRatTypes() { final int[] ratTypes = TelephonyManager.getAllNetworkTypes(); final HashSet<Integer> collapsedRatTypes = new HashSet<>(); for (final int ratType : ratTypes) { collapsedRatTypes.add(NetworkTemplate.getCollapsedRatType(ratType)); } // Add NETWORK_TYPE_5G_NSA to the returned list since 5G NSA is a virtual RAT type and // it is not in TelephonyManager#NETWORK_TYPE_* constants. // See {@link NetworkStatsManager#NETWORK_TYPE_5G_NSA}. collapsedRatTypes.add( NetworkTemplate.getCollapsedRatType(NetworkStatsManager.NETWORK_TYPE_5G_NSA)); // Ensure that unknown type is returned. collapsedRatTypes.add(TelephonyManager.NETWORK_TYPE_UNKNOWN); return toIntArray(collapsedRatTypes); } @NonNull private static int[] toIntArray(@NonNull Collection<Integer> list) { final int[] array = new int[list.size()]; int i = 0; for (final Integer item : list) { array[i++] = item; } return array; } /** * Check if matches Wi-Fi network template. */ Loading packages/ConnectivityT/service/src/com/android/server/net/NetworkStatsService.java +1 −1 Original line number Diff line number Diff line Loading @@ -244,7 +244,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { /** * When enabled, all mobile data is reported under {@link NetworkTemplate#NETWORK_TYPE_ALL}. * When disabled, mobile data is broken down by a granular ratType representative of the * actual ratType. {@see NetworkTemplate#getCollapsedRatType}. * actual ratType. {@see android.app.usage.NetworkStatsManager#getCollapsedRatType}. * Enabling this decreases the level of detail but saves performance, disk space and * amount of data logged. */ Loading packages/ConnectivityT/service/src/com/android/server/net/NetworkStatsSubscriptionsMonitor.java +2 −2 Original line number Diff line number Diff line Loading @@ -17,7 +17,7 @@ package com.android.server.net; import static android.app.usage.NetworkStatsManager.NETWORK_TYPE_5G_NSA; import static android.net.NetworkTemplate.getCollapsedRatType; import static android.app.usage.NetworkStatsManager.getCollapsedRatType; import static android.telephony.TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_ADVANCED; import static android.telephony.TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA; import static android.telephony.TelephonyManager.NETWORK_TYPE_LTE; Loading Loading @@ -57,7 +57,7 @@ public class NetworkStatsSubscriptionsMonitor extends * * @param subscriberId IMSI of the subscription. * @param collapsedRatType collapsed RAT type. * @see android.net.NetworkTemplate#getCollapsedRatType(int). * @see android.app.usage.NetworkStatsManager#getCollapsedRatType(int). */ void onCollapsedRatTypeChanged(@NonNull String subscriberId, @Annotation.NetworkType int collapsedRatType); Loading Loading
core/api/module-lib-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -55,6 +55,7 @@ package android.app.usage { public class NetworkStatsManager { method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK}) public void forceUpdate(); method public static int getCollapsedRatType(int); method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK}) public void notifyNetworkStatus(@NonNull java.util.List<android.net.Network>, @NonNull java.util.List<android.net.NetworkStateSnapshot>, @Nullable String, @NonNull java.util.List<android.net.UnderlyingNetworkInfo>); method @NonNull @WorkerThread public android.app.usage.NetworkStats queryDetailsForDevice(@NonNull android.net.NetworkTemplate, long, long); method @NonNull @WorkerThread public android.app.usage.NetworkStats queryDetailsForUidTagState(@NonNull android.net.NetworkTemplate, long, long, int, int, int) throws java.lang.SecurityException; Loading
packages/ConnectivityT/framework-t/src/android/app/usage/NetworkStatsManager.java +48 −0 Original line number Diff line number Diff line Loading @@ -1123,4 +1123,52 @@ public class NetworkStatsManager { throw e.rethrowFromSystemServer(); } } /** * Get a RAT type representative of a group of RAT types for network statistics. * * Collapse the given Radio Access Technology (RAT) type into a bucket that * is representative of the original RAT type for network statistics. The * mapping mostly corresponds to {@code TelephonyManager#NETWORK_CLASS_BIT_MASK_*} * but with adaptations specific to the virtual types introduced by * networks stats. * * @param ratType An integer defined in {@code TelephonyManager#NETWORK_TYPE_*}. * * @hide */ @SystemApi(client = MODULE_LIBRARIES) public static int getCollapsedRatType(int ratType) { switch (ratType) { case TelephonyManager.NETWORK_TYPE_GPRS: case TelephonyManager.NETWORK_TYPE_GSM: case TelephonyManager.NETWORK_TYPE_EDGE: case TelephonyManager.NETWORK_TYPE_IDEN: case TelephonyManager.NETWORK_TYPE_CDMA: case TelephonyManager.NETWORK_TYPE_1xRTT: return TelephonyManager.NETWORK_TYPE_GSM; case TelephonyManager.NETWORK_TYPE_EVDO_0: case TelephonyManager.NETWORK_TYPE_EVDO_A: case TelephonyManager.NETWORK_TYPE_EVDO_B: case TelephonyManager.NETWORK_TYPE_EHRPD: case TelephonyManager.NETWORK_TYPE_UMTS: case TelephonyManager.NETWORK_TYPE_HSDPA: case TelephonyManager.NETWORK_TYPE_HSUPA: case TelephonyManager.NETWORK_TYPE_HSPA: case TelephonyManager.NETWORK_TYPE_HSPAP: case TelephonyManager.NETWORK_TYPE_TD_SCDMA: return TelephonyManager.NETWORK_TYPE_UMTS; case TelephonyManager.NETWORK_TYPE_LTE: case TelephonyManager.NETWORK_TYPE_IWLAN: return TelephonyManager.NETWORK_TYPE_LTE; case TelephonyManager.NETWORK_TYPE_NR: return TelephonyManager.NETWORK_TYPE_NR; // Virtual RAT type for 5G NSA mode, see // {@link NetworkStatsManager#NETWORK_TYPE_5G_NSA}. case NetworkStatsManager.NETWORK_TYPE_5G_NSA: return NetworkStatsManager.NETWORK_TYPE_5G_NSA; default: return TelephonyManager.NETWORK_TYPE_UNKNOWN; } } }
packages/ConnectivityT/framework-t/src/android/net/NetworkTemplate.java +2 −84 Original line number Diff line number Diff line Loading @@ -48,7 +48,6 @@ import android.os.Build; import android.os.Parcel; import android.os.Parcelable; import android.telephony.Annotation.NetworkType; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.ArraySet; Loading @@ -59,9 +58,7 @@ import com.android.net.module.util.NetworkStatsUtils; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.Arrays; import java.util.Collection; import java.util.Comparator; import java.util.HashSet; import java.util.List; import java.util.Objects; import java.util.Set; Loading Loading @@ -703,7 +700,8 @@ public final class NetworkTemplate implements Parcelable { private boolean matchesCollapsedRatType(NetworkIdentity ident) { return mRatType == NETWORK_TYPE_ALL || getCollapsedRatType(mRatType) == getCollapsedRatType(ident.mRatType); || NetworkStatsManager.getCollapsedRatType(mRatType) == NetworkStatsManager.getCollapsedRatType(ident.mRatType); } /** Loading Loading @@ -746,86 +744,6 @@ public final class NetworkTemplate implements Parcelable { } } /** * Get a Radio Access Technology(RAT) type that is representative of a group of RAT types. * The mapping is corresponding to {@code TelephonyManager#NETWORK_CLASS_BIT_MASK_*}. * * @param ratType An integer defined in {@code TelephonyManager#NETWORK_TYPE_*}. * * @hide */ // TODO: 1. Consider move this to TelephonyManager if used by other modules. // 2. Consider make this configurable. // 3. Use TelephonyManager APIs when available. // TODO: @SystemApi when ready. public static int getCollapsedRatType(int ratType) { switch (ratType) { case TelephonyManager.NETWORK_TYPE_GPRS: case TelephonyManager.NETWORK_TYPE_GSM: case TelephonyManager.NETWORK_TYPE_EDGE: case TelephonyManager.NETWORK_TYPE_IDEN: case TelephonyManager.NETWORK_TYPE_CDMA: case TelephonyManager.NETWORK_TYPE_1xRTT: return TelephonyManager.NETWORK_TYPE_GSM; case TelephonyManager.NETWORK_TYPE_EVDO_0: case TelephonyManager.NETWORK_TYPE_EVDO_A: case TelephonyManager.NETWORK_TYPE_EVDO_B: case TelephonyManager.NETWORK_TYPE_EHRPD: case TelephonyManager.NETWORK_TYPE_UMTS: case TelephonyManager.NETWORK_TYPE_HSDPA: case TelephonyManager.NETWORK_TYPE_HSUPA: case TelephonyManager.NETWORK_TYPE_HSPA: case TelephonyManager.NETWORK_TYPE_HSPAP: case TelephonyManager.NETWORK_TYPE_TD_SCDMA: return TelephonyManager.NETWORK_TYPE_UMTS; case TelephonyManager.NETWORK_TYPE_LTE: case TelephonyManager.NETWORK_TYPE_IWLAN: return TelephonyManager.NETWORK_TYPE_LTE; case TelephonyManager.NETWORK_TYPE_NR: return TelephonyManager.NETWORK_TYPE_NR; // Virtual RAT type for 5G NSA mode, see // {@link NetworkStatsManager#NETWORK_TYPE_5G_NSA}. case NetworkStatsManager.NETWORK_TYPE_5G_NSA: return NetworkStatsManager.NETWORK_TYPE_5G_NSA; default: return TelephonyManager.NETWORK_TYPE_UNKNOWN; } } /** * Return all supported collapsed RAT types that could be returned by * {@link #getCollapsedRatType(int)}. * * @hide */ // TODO: @SystemApi when ready. @NonNull public static final int[] getAllCollapsedRatTypes() { final int[] ratTypes = TelephonyManager.getAllNetworkTypes(); final HashSet<Integer> collapsedRatTypes = new HashSet<>(); for (final int ratType : ratTypes) { collapsedRatTypes.add(NetworkTemplate.getCollapsedRatType(ratType)); } // Add NETWORK_TYPE_5G_NSA to the returned list since 5G NSA is a virtual RAT type and // it is not in TelephonyManager#NETWORK_TYPE_* constants. // See {@link NetworkStatsManager#NETWORK_TYPE_5G_NSA}. collapsedRatTypes.add( NetworkTemplate.getCollapsedRatType(NetworkStatsManager.NETWORK_TYPE_5G_NSA)); // Ensure that unknown type is returned. collapsedRatTypes.add(TelephonyManager.NETWORK_TYPE_UNKNOWN); return toIntArray(collapsedRatTypes); } @NonNull private static int[] toIntArray(@NonNull Collection<Integer> list) { final int[] array = new int[list.size()]; int i = 0; for (final Integer item : list) { array[i++] = item; } return array; } /** * Check if matches Wi-Fi network template. */ Loading
packages/ConnectivityT/service/src/com/android/server/net/NetworkStatsService.java +1 −1 Original line number Diff line number Diff line Loading @@ -244,7 +244,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { /** * When enabled, all mobile data is reported under {@link NetworkTemplate#NETWORK_TYPE_ALL}. * When disabled, mobile data is broken down by a granular ratType representative of the * actual ratType. {@see NetworkTemplate#getCollapsedRatType}. * actual ratType. {@see android.app.usage.NetworkStatsManager#getCollapsedRatType}. * Enabling this decreases the level of detail but saves performance, disk space and * amount of data logged. */ Loading
packages/ConnectivityT/service/src/com/android/server/net/NetworkStatsSubscriptionsMonitor.java +2 −2 Original line number Diff line number Diff line Loading @@ -17,7 +17,7 @@ package com.android.server.net; import static android.app.usage.NetworkStatsManager.NETWORK_TYPE_5G_NSA; import static android.net.NetworkTemplate.getCollapsedRatType; import static android.app.usage.NetworkStatsManager.getCollapsedRatType; import static android.telephony.TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_ADVANCED; import static android.telephony.TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA; import static android.telephony.TelephonyManager.NETWORK_TYPE_LTE; Loading Loading @@ -57,7 +57,7 @@ public class NetworkStatsSubscriptionsMonitor extends * * @param subscriberId IMSI of the subscription. * @param collapsedRatType collapsed RAT type. * @see android.net.NetworkTemplate#getCollapsedRatType(int). * @see android.app.usage.NetworkStatsManager#getCollapsedRatType(int). */ void onCollapsedRatTypeChanged(@NonNull String subscriberId, @Annotation.NetworkType int collapsedRatType); Loading