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

Commit f2bf0fd2 authored by shubang's avatar shubang
Browse files

Unhide media metrics APIs part 2: Network event

Bug: 167036690
Test: mmm
Change-Id: Idd96c19fca5e87e73d565f9141ea4bac70d42b60
parent 87b3131b
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -24085,6 +24085,29 @@ package android.media.metrics {
    field public static final long INVALID_TIMESTAMP = -1L; // 0xffffffffffffffffL
  }
  public final class NetworkEvent extends android.media.metrics.Event implements android.os.Parcelable {
    method public int describeContents();
    method public int getNetworkType();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.media.metrics.NetworkEvent> CREATOR;
    field public static final int NETWORK_TYPE_2G = 4; // 0x4
    field public static final int NETWORK_TYPE_3G = 5; // 0x5
    field public static final int NETWORK_TYPE_4G = 6; // 0x6
    field public static final int NETWORK_TYPE_5G_NSA = 7; // 0x7
    field public static final int NETWORK_TYPE_5G_SA = 8; // 0x8
    field public static final int NETWORK_TYPE_ETHERNET = 3; // 0x3
    field public static final int NETWORK_TYPE_NONE = 0; // 0x0
    field public static final int NETWORK_TYPE_OTHER = 1; // 0x1
    field public static final int NETWORK_TYPE_WIFI = 2; // 0x2
  }
  public static final class NetworkEvent.Builder {
    ctor public NetworkEvent.Builder();
    method @NonNull public android.media.metrics.NetworkEvent build();
    method @NonNull public android.media.metrics.NetworkEvent.Builder setNetworkType(int);
    method @NonNull public android.media.metrics.NetworkEvent.Builder setTimeSinceCreatedMillis(@IntRange(from=0xffffffff) long);
  }
  public final class PlaybackErrorEvent extends android.media.metrics.Event implements android.os.Parcelable {
    method public int describeContents();
    method public int getErrorCode();
@@ -24108,6 +24131,7 @@ package android.media.metrics {
  public final class PlaybackSession implements java.lang.AutoCloseable {
    method public void close();
    method @NonNull public String getId();
    method public void reportNetworkEvent(@NonNull android.media.metrics.NetworkEvent);
    method public void reportPlaybackErrorEvent(@NonNull android.media.metrics.PlaybackErrorEvent);
    method public void reportPlaybackStateEvent(@NonNull android.media.metrics.PlaybackStateEvent);
    method public void reportTrackChangeEvent(@NonNull android.media.metrics.TrackChangeEvent);
+53 −33
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package android.media.metrics;

import android.annotation.IntDef;
import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.os.Parcel;
@@ -27,22 +28,30 @@ import java.lang.annotation.RetentionPolicy;
import java.util.Objects;

/**
 * Playback network event.
 * @hide
 * Media network event.
 */
public final class NetworkEvent implements Parcelable {
public final class NetworkEvent extends Event implements Parcelable {
    /** Network type is not specified. Default type. */
    public static final int NETWORK_TYPE_NONE = 0;
    /** Other network type */
    public static final int NETWORK_TYPE_OTHER = 1;
    /** Wi-Fi network */
    public static final int NETWORK_TYPE_WIFI = 2;
    /** Ethernet network */
    public static final int NETWORK_TYPE_ETHERNET = 3;
    /** 2G network */
    public static final int NETWORK_TYPE_2G = 4;
    /** 3G network */
    public static final int NETWORK_TYPE_3G = 5;
    /** 4G network */
    public static final int NETWORK_TYPE_4G = 6;
    /** 5G NSA network */
    public static final int NETWORK_TYPE_5G_NSA = 7;
    /** 5G SA network */
    public static final int NETWORK_TYPE_5G_SA = 8;

    private final int mType;
    private final long mTimeSincePlaybackCreatedMillis;
    private final int mNetworkType;
    private final long mTimeSinceCreatedMillis;

    /** @hide */
    @IntDef(prefix = "NETWORK_TYPE_", value = {
@@ -61,6 +70,7 @@ public final class NetworkEvent implements Parcelable {

    /**
     * Network type to string.
     * @hide
     */
    public static String networkTypeToString(@NetworkType int value) {
        switch (value) {
@@ -92,25 +102,34 @@ public final class NetworkEvent implements Parcelable {
     *
     * @hide
     */
    public NetworkEvent(@NetworkType int type, long timeSincePlaybackCreatedMillis) {
        this.mType = type;
        this.mTimeSincePlaybackCreatedMillis = timeSincePlaybackCreatedMillis;
    public NetworkEvent(@NetworkType int type, long timeSinceCreatedMillis) {
        this.mNetworkType = type;
        this.mTimeSinceCreatedMillis = timeSinceCreatedMillis;
    }

    /**
     * Gets network type.
     */
    @NetworkType
    public int getType() {
        return mType;
    public int getNetworkType() {
        return mNetworkType;
    }

    public long getTimeSincePlaybackCreatedMillis() {
        return mTimeSincePlaybackCreatedMillis;
    /**
     * Gets timestamp since the creation in milliseconds.
     * @return the timestamp since the creation in milliseconds, or -1 if unknown.
     */
    @Override
    @IntRange(from = -1)
    public long getTimeSinceCreatedMillis() {
        return mTimeSinceCreatedMillis;
    }

    @Override
    public String toString() {
        return "NetworkEvent { "
                + "type = " + mType + ", "
                + "timeSincePlaybackCreatedMillis = " + mTimeSincePlaybackCreatedMillis
                + "networkType = " + mNetworkType + ", "
                + "timeSinceCreatedMillis = " + mTimeSinceCreatedMillis
                + " }";
    }

@@ -119,19 +138,19 @@ public final class NetworkEvent implements Parcelable {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        NetworkEvent that = (NetworkEvent) o;
        return mType == that.mType
                && mTimeSincePlaybackCreatedMillis == that.mTimeSincePlaybackCreatedMillis;
        return mNetworkType == that.mNetworkType
                && mTimeSinceCreatedMillis == that.mTimeSinceCreatedMillis;
    }

    @Override
    public int hashCode() {
        return Objects.hash(mType, mTimeSincePlaybackCreatedMillis);
        return Objects.hash(mNetworkType, mTimeSinceCreatedMillis);
    }

    @Override
    public void writeToParcel(@NonNull android.os.Parcel dest, int flags) {
        dest.writeInt(mType);
        dest.writeLong(mTimeSincePlaybackCreatedMillis);
        dest.writeInt(mNetworkType);
        dest.writeLong(mTimeSinceCreatedMillis);
    }

    @Override
@@ -142,12 +161,15 @@ public final class NetworkEvent implements Parcelable {
    /** @hide */
    /* package-private */ NetworkEvent(@NonNull android.os.Parcel in) {
        int type = in.readInt();
        long timeSincePlaybackCreatedMillis = in.readLong();
        long timeSinceCreatedMillis = in.readLong();

        this.mType = type;
        this.mTimeSincePlaybackCreatedMillis = timeSincePlaybackCreatedMillis;
        this.mNetworkType = type;
        this.mTimeSinceCreatedMillis = timeSinceCreatedMillis;
    }

    /**
     * Used to read a NetworkEvent from a Parcel.
     */
    public static final @NonNull Parcelable.Creator<NetworkEvent> CREATOR =
            new Parcelable.Creator<NetworkEvent>() {
        @Override
@@ -165,13 +187,11 @@ public final class NetworkEvent implements Parcelable {
     * A builder for {@link NetworkEvent}
     */
    public static final class Builder {
        private int mType;
        private long mTimeSincePlaybackCreatedMillis;
        private int mNetworkType = NETWORK_TYPE_NONE;
        private long mTimeSinceCreatedMillis = -1;

        /**
         * Creates a new Builder.
         *
         * @hide
         */
        public Builder() {
        }
@@ -179,24 +199,24 @@ public final class NetworkEvent implements Parcelable {
        /**
         * Sets network type.
         */
        public @NonNull Builder setType(@NetworkType int value) {
            mType = value;
        public @NonNull Builder setNetworkType(@NetworkType int value) {
            mNetworkType = value;
            return this;
        }

        /**
         * Sets timestamp since the creation in milliseconds.
         * @param value the timestamp since the creation in milliseconds.
         *              -1 indicates the value is unknown.
         */
        public @NonNull Builder setTimeSincePlaybackCreatedMillis(long value) {
            mTimeSincePlaybackCreatedMillis = value;
        public @NonNull Builder setTimeSinceCreatedMillis(@IntRange(from = -1) long value) {
            mTimeSinceCreatedMillis = value;
            return this;
        }

        /** Builds the instance. */
        public @NonNull NetworkEvent build() {
            NetworkEvent o = new NetworkEvent(
                    mType,
                    mTimeSincePlaybackCreatedMillis);
            NetworkEvent o = new NetworkEvent(mNetworkType, mTimeSinceCreatedMillis);
            return o;
        }
    }
+1 −2
Original line number Diff line number Diff line
@@ -60,9 +60,8 @@ public final class PlaybackSession implements AutoCloseable {

    /**
     * Reports network event.
     * @hide
     */
    public void reportNetworkEvent(NetworkEvent event) {
    public void reportNetworkEvent(@NonNull NetworkEvent event) {
        mManager.reportNetworkEvent(mId, event);
    }

+2 −2
Original line number Diff line number Diff line
@@ -121,8 +121,8 @@ public final class MediaMetricsManagerService extends SystemService {
            StatsEvent statsEvent = StatsEvent.newBuilder()
                    .setAtomId(321)
                    .writeString(sessionId)
                    .writeInt(event.getType())
                    .writeLong(event.getTimeSincePlaybackCreatedMillis())
                    .writeInt(event.getNetworkType())
                    .writeLong(event.getTimeSinceCreatedMillis())
                    .usePooledBuffer()
                    .build();
            StatsLog.write(statsEvent);