From 05ae0feefcda2e4f60d6b4014bf6eee2d6448d1c Mon Sep 17 00:00:00 2001 From: Jeff Davidson Date: Wed, 6 Jan 2016 13:53:36 -0800 Subject: [PATCH] Define new APIs for metering and roaming network stats buckets. These are analagous to the state buckets for tracking whether usage is incurred while the app is in the foreground or background. We will additionally track whether data usage is incurred over a metered or unmetered network, and whether it is incurred over a roaming or native network. The APIs are not implemented in this CL; the existing buckets are still returned with METERING_ALL and ROAMING_ALL to indicate that this is not yet being tracked. Bug: 25813438 Bug: 25813958 Change-Id: I76dd3dd063ed28ef5579ca3a978570532e7836bc --- api/current.txt | 8 ++++ api/system-current.txt | 8 ++++ api/test-current.txt | 8 ++++ core/java/android/app/usage/NetworkStats.java | 65 ++++++++++++++++++++++++++- 4 files changed, 87 insertions(+), 2 deletions(-) diff --git a/api/current.txt b/api/current.txt index 78de86028377..0b3c33bb53d2 100644 --- a/api/current.txt +++ b/api/current.txt @@ -6215,6 +6215,8 @@ package android.app.usage { public static class NetworkStats.Bucket { ctor public NetworkStats.Bucket(); method public long getEndTimeStamp(); + method public int getMetering(); + method public int getRoaming(); method public long getRxBytes(); method public long getRxPackets(); method public long getStartTimeStamp(); @@ -6222,6 +6224,12 @@ package android.app.usage { method public long getTxBytes(); method public long getTxPackets(); method public int getUid(); + field public static final int METERING_ALL = -1; // 0xffffffff + field public static final int METERING_DEFAULT = 1; // 0x1 + field public static final int METERING_METERED = 2; // 0x2 + field public static final int ROAMING_ALL = -1; // 0xffffffff + field public static final int ROAMING_DEFAULT = 1; // 0x1 + field public static final int ROAMING_ROAMING = 2; // 0x2 field public static final int STATE_ALL = -1; // 0xffffffff field public static final int STATE_DEFAULT = 1; // 0x1 field public static final int STATE_FOREGROUND = 2; // 0x2 diff --git a/api/system-current.txt b/api/system-current.txt index 24d257d49514..2e6fc8207049 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -6429,6 +6429,8 @@ package android.app.usage { public static class NetworkStats.Bucket { ctor public NetworkStats.Bucket(); method public long getEndTimeStamp(); + method public int getMetering(); + method public int getRoaming(); method public long getRxBytes(); method public long getRxPackets(); method public long getStartTimeStamp(); @@ -6436,6 +6438,12 @@ package android.app.usage { method public long getTxBytes(); method public long getTxPackets(); method public int getUid(); + field public static final int METERING_ALL = -1; // 0xffffffff + field public static final int METERING_DEFAULT = 1; // 0x1 + field public static final int METERING_METERED = 2; // 0x2 + field public static final int ROAMING_ALL = -1; // 0xffffffff + field public static final int ROAMING_DEFAULT = 1; // 0x1 + field public static final int ROAMING_ROAMING = 2; // 0x2 field public static final int STATE_ALL = -1; // 0xffffffff field public static final int STATE_DEFAULT = 1; // 0x1 field public static final int STATE_FOREGROUND = 2; // 0x2 diff --git a/api/test-current.txt b/api/test-current.txt index 6b6bafb9454e..c093531f1354 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -6215,6 +6215,8 @@ package android.app.usage { public static class NetworkStats.Bucket { ctor public NetworkStats.Bucket(); method public long getEndTimeStamp(); + method public int getMetering(); + method public int getRoaming(); method public long getRxBytes(); method public long getRxPackets(); method public long getStartTimeStamp(); @@ -6222,6 +6224,12 @@ package android.app.usage { method public long getTxBytes(); method public long getTxPackets(); method public int getUid(); + field public static final int METERING_ALL = -1; // 0xffffffff + field public static final int METERING_DEFAULT = 1; // 0x1 + field public static final int METERING_METERED = 2; // 0x2 + field public static final int ROAMING_ALL = -1; // 0xffffffff + field public static final int ROAMING_DEFAULT = 1; // 0x1 + field public static final int ROAMING_ROAMING = 2; // 0x2 field public static final int STATE_ALL = -1; // 0xffffffff field public static final int STATE_DEFAULT = 1; // 0x1 field public static final int STATE_FOREGROUND = 2; // 0x2 diff --git a/core/java/android/app/usage/NetworkStats.java b/core/java/android/app/usage/NetworkStats.java index ef08eb9e8987..5f97c9e1d4fd 100644 --- a/core/java/android/app/usage/NetworkStats.java +++ b/core/java/android/app/usage/NetworkStats.java @@ -121,12 +121,12 @@ public final class NetworkStats implements AutoCloseable { */ public static class Bucket { /** - * Combined usage across all other states. + * Combined usage across all states. */ public static final int STATE_ALL = -1; /** - * Usage not accounted in any other states. + * Usage not accounted for in any other state. */ public static final int STATE_DEFAULT = 0x1; @@ -150,8 +150,40 @@ public final class NetworkStats implements AutoCloseable { */ public static final int UID_TETHERING = TrafficStats.UID_TETHERING; + /** + * Combined usage across all metering states. + */ + public static final int METERING_ALL = -1; + + /** + * Usage not accounted for in any other metering state. + */ + public static final int METERING_DEFAULT = 0x1; + + /** + * Metered usage. + */ + public static final int METERING_METERED = 0x2; + + /** + * Combined usage across all roaming states. + */ + public static final int ROAMING_ALL = -1; + + /** + * Usage not accounted for in any other roaming state. + */ + public static final int ROAMING_DEFAULT = 0x1; + + /** + * Roaming usage. + */ + public static final int ROAMING_ROAMING = 0x2; + private int mUid; private int mState; + private int mMetering; + private int mRoaming; private long mBeginTimeStamp; private long mEndTimeStamp; private long mRxBytes; @@ -206,6 +238,30 @@ public final class NetworkStats implements AutoCloseable { } /** + * Metering state. One of the following values:

+ *

+ */ + public int getMetering() { + return mMetering; + } + + /** + * Roaming state. One of the following values:

+ *

+ */ + public int getRoaming() { + return mRoaming; + } + + /** * Start timestamp of the bucket's time interval. Defined in terms of "Unix time", see * {@link java.lang.System#currentTimeMillis}. * @return Start of interval. @@ -398,6 +454,9 @@ public final class NetworkStats implements AutoCloseable { private void fillBucketFromSummaryEntry(Bucket bucketOut) { bucketOut.mUid = Bucket.convertUid(mRecycledSummaryEntry.uid); bucketOut.mState = Bucket.convertState(mRecycledSummaryEntry.set); + // TODO: Implement metering/roaming tracking. + bucketOut.mMetering = Bucket.METERING_ALL; + bucketOut.mRoaming = Bucket.ROAMING_ALL; bucketOut.mBeginTimeStamp = mStartTimeStamp; bucketOut.mEndTimeStamp = mEndTimeStamp; bucketOut.mRxBytes = mRecycledSummaryEntry.rxBytes; @@ -444,6 +503,8 @@ public final class NetworkStats implements AutoCloseable { mRecycledHistoryEntry); bucketOut.mUid = Bucket.convertUid(getUid()); bucketOut.mState = Bucket.STATE_ALL; + bucketOut.mMetering = Bucket.METERING_ALL; + bucketOut.mRoaming = Bucket.ROAMING_ALL; bucketOut.mBeginTimeStamp = mRecycledHistoryEntry.bucketStart; bucketOut.mEndTimeStamp = mRecycledHistoryEntry.bucketStart + mRecycledHistoryEntry.bucketDuration; -- 2.11.0