Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 05ae0fee authored by Jeff Davidson's avatar Jeff Davidson
Browse files

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
parent 946502f5
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -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
+8 −0
Original line number Diff line number Diff line
@@ -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
+8 −0
Original line number Diff line number Diff line
@@ -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
+63 −2
Original line number Diff line number Diff line
@@ -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;
@@ -205,6 +237,30 @@ public final class NetworkStats implements AutoCloseable {
            return mState;
        }

        /**
         * Metering state. One of the following values:<p/>
         * <ul>
         * <li>{@link #METERING_ALL}</li>
         * <li>{@link #METERING_DEFAULT}</li>
         * <li>{@link #METERING_METERED}</li>
         * </ul>
         */
        public int getMetering() {
            return mMetering;
        }

        /**
         * Roaming state. One of the following values:<p/>
         * <ul>
         * <li>{@link #ROAMING_ALL}</li>
         * <li>{@link #ROAMING_DEFAULT}</li>
         * <li>{@link #ROAMING_ROAMING}</li>
         * </ul>
         */
        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}.
@@ -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;