Merge changes from topics "media_metrics_network", "media_metrics_pb_metrics", "media_metrics_track_change" into sc-dev
* changes: Unhide media metrics APIs part 2: playback metrics Unhide media metrics APIs part 2: Network event Unhide media metrics APIs part 2: Track change event
This commit is contained in:
@@ -21000,7 +21000,7 @@ package android.media {
|
|||||||
method @NonNull public String getDiagnosticInfo();
|
method @NonNull public String getDiagnosticInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class MediaCodec {
|
public final class MediaCodec implements android.media.metrics.PlaybackComponent {
|
||||||
method public void configure(@Nullable android.media.MediaFormat, @Nullable android.view.Surface, @Nullable android.media.MediaCrypto, int);
|
method public void configure(@Nullable android.media.MediaFormat, @Nullable android.view.Surface, @Nullable android.media.MediaCrypto, int);
|
||||||
method public void configure(@Nullable android.media.MediaFormat, @Nullable android.view.Surface, int, @Nullable android.media.MediaDescrambler);
|
method public void configure(@Nullable android.media.MediaFormat, @Nullable android.view.Surface, int, @Nullable android.media.MediaDescrambler);
|
||||||
method @NonNull public static android.media.MediaCodec createByCodecName(@NonNull String) throws java.io.IOException;
|
method @NonNull public static android.media.MediaCodec createByCodecName(@NonNull String) throws java.io.IOException;
|
||||||
@@ -21026,6 +21026,7 @@ package android.media {
|
|||||||
method @NonNull public android.media.MediaFormat getOutputFormat(int);
|
method @NonNull public android.media.MediaFormat getOutputFormat(int);
|
||||||
method @NonNull public android.media.MediaCodec.OutputFrame getOutputFrame(int);
|
method @NonNull public android.media.MediaCodec.OutputFrame getOutputFrame(int);
|
||||||
method @Nullable public android.media.Image getOutputImage(int);
|
method @Nullable public android.media.Image getOutputImage(int);
|
||||||
|
method public String getPlaybackId();
|
||||||
method @NonNull public android.media.MediaCodec.QueueRequest getQueueRequest(int);
|
method @NonNull public android.media.MediaCodec.QueueRequest getQueueRequest(int);
|
||||||
method @Nullable public static android.media.Image mapHardwareBuffer(@NonNull android.hardware.HardwareBuffer);
|
method @Nullable public static android.media.Image mapHardwareBuffer(@NonNull android.hardware.HardwareBuffer);
|
||||||
method public void queueInputBuffer(int, int, int, long, int) throws android.media.MediaCodec.CryptoException;
|
method public void queueInputBuffer(int, int, int, long, int) throws android.media.MediaCodec.CryptoException;
|
||||||
@@ -21041,6 +21042,7 @@ package android.media {
|
|||||||
method public void setOnFrameRenderedListener(@Nullable android.media.MediaCodec.OnFrameRenderedListener, @Nullable android.os.Handler);
|
method public void setOnFrameRenderedListener(@Nullable android.media.MediaCodec.OnFrameRenderedListener, @Nullable android.os.Handler);
|
||||||
method public void setOutputSurface(@NonNull android.view.Surface);
|
method public void setOutputSurface(@NonNull android.view.Surface);
|
||||||
method public void setParameters(@Nullable android.os.Bundle);
|
method public void setParameters(@Nullable android.os.Bundle);
|
||||||
|
method public void setPlaybackId(@NonNull String);
|
||||||
method public void setVideoScalingMode(int);
|
method public void setVideoScalingMode(int);
|
||||||
method public void signalEndOfInputStream();
|
method public void signalEndOfInputStream();
|
||||||
method public void start();
|
method public void start();
|
||||||
@@ -24114,6 +24116,34 @@ package android.media.metrics {
|
|||||||
field public static final long INVALID_TIMESTAMP = -1L; // 0xffffffffffffffffL
|
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 interface PlaybackComponent {
|
||||||
|
method @NonNull public String getPlaybackId();
|
||||||
|
method public void setPlaybackId(@NonNull String);
|
||||||
|
}
|
||||||
|
|
||||||
public final class PlaybackErrorEvent extends android.media.metrics.Event implements android.os.Parcelable {
|
public final class PlaybackErrorEvent extends android.media.metrics.Event implements android.os.Parcelable {
|
||||||
method public int describeContents();
|
method public int describeContents();
|
||||||
method public int getErrorCode();
|
method public int getErrorCode();
|
||||||
@@ -24134,11 +24164,78 @@ package android.media.metrics {
|
|||||||
method @NonNull public android.media.metrics.PlaybackErrorEvent.Builder setTimeSinceCreatedMillis(@IntRange(from=0xffffffff) long);
|
method @NonNull public android.media.metrics.PlaybackErrorEvent.Builder setTimeSinceCreatedMillis(@IntRange(from=0xffffffff) long);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final class PlaybackMetrics implements android.os.Parcelable {
|
||||||
|
method public int describeContents();
|
||||||
|
method @IntRange(from=0xffffffff, to=java.lang.Integer.MAX_VALUE) public int getAudioUnderrunCount();
|
||||||
|
method public int getContentType();
|
||||||
|
method public int getDrmType();
|
||||||
|
method @NonNull public long[] getExperimentIds();
|
||||||
|
method @IntRange(from=0xffffffff) public long getLocalBytesRead();
|
||||||
|
method @IntRange(from=0xffffffff) public long getMediaDurationMillis();
|
||||||
|
method @IntRange(from=0xffffffff) public long getNetworkBytesRead();
|
||||||
|
method @IntRange(from=0xffffffff) public long getNetworkTransferDurationMillis();
|
||||||
|
method public int getPlaybackType();
|
||||||
|
method @Nullable public String getPlayerName();
|
||||||
|
method @Nullable public String getPlayerVersion();
|
||||||
|
method public int getStreamSource();
|
||||||
|
method public int getStreamType();
|
||||||
|
method @IntRange(from=0xffffffff, to=java.lang.Integer.MAX_VALUE) public int getVideoFramesDropped();
|
||||||
|
method @IntRange(from=0xffffffff, to=java.lang.Integer.MAX_VALUE) public int getVideoFramesPlayed();
|
||||||
|
method public void writeToParcel(@NonNull android.os.Parcel, int);
|
||||||
|
field public static final int CONTENT_TYPE_AD = 1; // 0x1
|
||||||
|
field public static final int CONTENT_TYPE_MAIN = 0; // 0x0
|
||||||
|
field public static final int CONTENT_TYPE_OTHER = 2; // 0x2
|
||||||
|
field @NonNull public static final android.os.Parcelable.Creator<android.media.metrics.PlaybackMetrics> CREATOR;
|
||||||
|
field public static final int DRM_TYPE_CLEARKEY = 6; // 0x6
|
||||||
|
field public static final int DRM_TYPE_NONE = 0; // 0x0
|
||||||
|
field public static final int DRM_TYPE_OTHER = 1; // 0x1
|
||||||
|
field public static final int DRM_TYPE_PLAY_READY = 2; // 0x2
|
||||||
|
field public static final int DRM_TYPE_WIDEVINE_L1 = 3; // 0x3
|
||||||
|
field public static final int DRM_TYPE_WIDEVINE_L3 = 4; // 0x4
|
||||||
|
field public static final int DRM_TYPE_WV_L3_FALLBACK = 5; // 0x5
|
||||||
|
field public static final int PLAYBACK_TYPE_LIVE = 1; // 0x1
|
||||||
|
field public static final int PLAYBACK_TYPE_OTHER = 2; // 0x2
|
||||||
|
field public static final int PLAYBACK_TYPE_VOD = 0; // 0x0
|
||||||
|
field public static final int STREAM_SOURCE_DEVICE = 2; // 0x2
|
||||||
|
field public static final int STREAM_SOURCE_MIXED = 3; // 0x3
|
||||||
|
field public static final int STREAM_SOURCE_NETWORK = 1; // 0x1
|
||||||
|
field public static final int STREAM_SOURCE_UNKNOWN = 0; // 0x0
|
||||||
|
field public static final int STREAM_TYPE_DASH = 3; // 0x3
|
||||||
|
field public static final int STREAM_TYPE_HLS = 4; // 0x4
|
||||||
|
field public static final int STREAM_TYPE_OTHER = 1; // 0x1
|
||||||
|
field public static final int STREAM_TYPE_PROGRESSIVE = 2; // 0x2
|
||||||
|
field public static final int STREAM_TYPE_SS = 5; // 0x5
|
||||||
|
field public static final int STREAM_TYPE_UNKNOWN = 0; // 0x0
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final class PlaybackMetrics.Builder {
|
||||||
|
ctor public PlaybackMetrics.Builder();
|
||||||
|
method @NonNull public android.media.metrics.PlaybackMetrics.Builder addExperimentId(long);
|
||||||
|
method @NonNull public android.media.metrics.PlaybackMetrics build();
|
||||||
|
method @NonNull public android.media.metrics.PlaybackMetrics.Builder setAudioUnderrunCount(@IntRange(from=0xffffffff, to=java.lang.Integer.MAX_VALUE) int);
|
||||||
|
method @NonNull public android.media.metrics.PlaybackMetrics.Builder setContentType(int);
|
||||||
|
method @NonNull public android.media.metrics.PlaybackMetrics.Builder setDrmType(int);
|
||||||
|
method @NonNull public android.media.metrics.PlaybackMetrics.Builder setLocalBytesRead(@IntRange(from=0xffffffff) long);
|
||||||
|
method @NonNull public android.media.metrics.PlaybackMetrics.Builder setMediaDurationMillis(@IntRange(from=0xffffffff) long);
|
||||||
|
method @NonNull public android.media.metrics.PlaybackMetrics.Builder setNetworkBytesRead(@IntRange(from=0xffffffff) long);
|
||||||
|
method @NonNull public android.media.metrics.PlaybackMetrics.Builder setNetworkTransferDurationMillis(@IntRange(from=0xffffffff) long);
|
||||||
|
method @NonNull public android.media.metrics.PlaybackMetrics.Builder setPlaybackType(int);
|
||||||
|
method @NonNull public android.media.metrics.PlaybackMetrics.Builder setPlayerName(@NonNull String);
|
||||||
|
method @NonNull public android.media.metrics.PlaybackMetrics.Builder setPlayerVersion(@NonNull String);
|
||||||
|
method @NonNull public android.media.metrics.PlaybackMetrics.Builder setStreamSource(int);
|
||||||
|
method @NonNull public android.media.metrics.PlaybackMetrics.Builder setStreamType(int);
|
||||||
|
method @NonNull public android.media.metrics.PlaybackMetrics.Builder setVideoFramesDropped(@IntRange(from=0xffffffff, to=java.lang.Integer.MAX_VALUE) int);
|
||||||
|
method @NonNull public android.media.metrics.PlaybackMetrics.Builder setVideoFramesPlayed(@IntRange(from=0xffffffff, to=java.lang.Integer.MAX_VALUE) int);
|
||||||
|
}
|
||||||
|
|
||||||
public final class PlaybackSession implements java.lang.AutoCloseable {
|
public final class PlaybackSession implements java.lang.AutoCloseable {
|
||||||
method public void close();
|
method public void close();
|
||||||
method @NonNull public String getId();
|
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 reportPlaybackErrorEvent(@NonNull android.media.metrics.PlaybackErrorEvent);
|
||||||
|
method public void reportPlaybackMetrics(@NonNull android.media.metrics.PlaybackMetrics);
|
||||||
method public void reportPlaybackStateEvent(@NonNull android.media.metrics.PlaybackStateEvent);
|
method public void reportPlaybackStateEvent(@NonNull android.media.metrics.PlaybackStateEvent);
|
||||||
|
method public void reportTrackChangeEvent(@NonNull android.media.metrics.TrackChangeEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class PlaybackStateEvent extends android.media.metrics.Event implements android.os.Parcelable {
|
public final class PlaybackStateEvent extends android.media.metrics.Event implements android.os.Parcelable {
|
||||||
@@ -24170,6 +24267,54 @@ package android.media.metrics {
|
|||||||
method @NonNull public android.media.metrics.PlaybackStateEvent.Builder setTimeSinceCreatedMillis(@IntRange(from=0xffffffff) long);
|
method @NonNull public android.media.metrics.PlaybackStateEvent.Builder setTimeSinceCreatedMillis(@IntRange(from=0xffffffff) long);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final class TrackChangeEvent extends android.media.metrics.Event implements android.os.Parcelable {
|
||||||
|
ctor public TrackChangeEvent(int, int, @Nullable String, @Nullable String, @Nullable String, int, long, int, @Nullable String, @Nullable String, int, int, int, int);
|
||||||
|
method public int describeContents();
|
||||||
|
method @IntRange(from=0xffffffff, to=java.lang.Integer.MAX_VALUE) public int getBitrate();
|
||||||
|
method @IntRange(from=0xffffffff, to=java.lang.Integer.MAX_VALUE) public int getChannelCount();
|
||||||
|
method @Nullable public String getCodecName();
|
||||||
|
method @Nullable public String getContainerMimeType();
|
||||||
|
method @IntRange(from=0xffffffff, to=java.lang.Integer.MAX_VALUE) public int getHeight();
|
||||||
|
method @Nullable public String getLanguage();
|
||||||
|
method @Nullable public String getLanguageRegion();
|
||||||
|
method @Nullable public String getSampleMimeType();
|
||||||
|
method @IntRange(from=0xffffffff, to=java.lang.Integer.MAX_VALUE) public int getSampleRate();
|
||||||
|
method public int getTrackChangeReason();
|
||||||
|
method public int getTrackState();
|
||||||
|
method public int getTrackType();
|
||||||
|
method @IntRange(from=0xffffffff, to=java.lang.Integer.MAX_VALUE) public int getWidth();
|
||||||
|
method public void writeToParcel(@NonNull android.os.Parcel, int);
|
||||||
|
field @NonNull public static final android.os.Parcelable.Creator<android.media.metrics.TrackChangeEvent> CREATOR;
|
||||||
|
field public static final int TRACK_CHANGE_REASON_ADAPTIVE = 4; // 0x4
|
||||||
|
field public static final int TRACK_CHANGE_REASON_INITIAL = 2; // 0x2
|
||||||
|
field public static final int TRACK_CHANGE_REASON_MANUAL = 3; // 0x3
|
||||||
|
field public static final int TRACK_CHANGE_REASON_OTHER = 1; // 0x1
|
||||||
|
field public static final int TRACK_CHANGE_REASON_UNKNOWN = 0; // 0x0
|
||||||
|
field public static final int TRACK_STATE_OFF = 0; // 0x0
|
||||||
|
field public static final int TRACK_STATE_ON = 1; // 0x1
|
||||||
|
field public static final int TRACK_TYPE_AUDIO = 0; // 0x0
|
||||||
|
field public static final int TRACK_TYPE_TEXT = 2; // 0x2
|
||||||
|
field public static final int TRACK_TYPE_VIDEO = 1; // 0x1
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final class TrackChangeEvent.Builder {
|
||||||
|
ctor public TrackChangeEvent.Builder(int);
|
||||||
|
method @NonNull public android.media.metrics.TrackChangeEvent build();
|
||||||
|
method @NonNull public android.media.metrics.TrackChangeEvent.Builder setBitrate(@IntRange(from=0xffffffff, to=java.lang.Integer.MAX_VALUE) int);
|
||||||
|
method @NonNull public android.media.metrics.TrackChangeEvent.Builder setChannelCount(@IntRange(from=0xffffffff, to=java.lang.Integer.MAX_VALUE) int);
|
||||||
|
method @NonNull public android.media.metrics.TrackChangeEvent.Builder setCodecName(@NonNull String);
|
||||||
|
method @NonNull public android.media.metrics.TrackChangeEvent.Builder setContainerMimeType(@NonNull String);
|
||||||
|
method @NonNull public android.media.metrics.TrackChangeEvent.Builder setHeight(@IntRange(from=0xffffffff, to=java.lang.Integer.MAX_VALUE) int);
|
||||||
|
method @NonNull public android.media.metrics.TrackChangeEvent.Builder setLanguage(@NonNull String);
|
||||||
|
method @NonNull public android.media.metrics.TrackChangeEvent.Builder setLanguageRegion(@NonNull String);
|
||||||
|
method @NonNull public android.media.metrics.TrackChangeEvent.Builder setSampleMimeType(@NonNull String);
|
||||||
|
method @NonNull public android.media.metrics.TrackChangeEvent.Builder setSampleRate(@IntRange(from=0xffffffff, to=java.lang.Integer.MAX_VALUE) int);
|
||||||
|
method @NonNull public android.media.metrics.TrackChangeEvent.Builder setTimeSinceCreatedMillis(@IntRange(from=0xffffffff) long);
|
||||||
|
method @NonNull public android.media.metrics.TrackChangeEvent.Builder setTrackChangeReason(int);
|
||||||
|
method @NonNull public android.media.metrics.TrackChangeEvent.Builder setTrackState(int);
|
||||||
|
method @NonNull public android.media.metrics.TrackChangeEvent.Builder setWidth(@IntRange(from=0xffffffff, to=java.lang.Integer.MAX_VALUE) int);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
package android.media.midi {
|
package android.media.midi {
|
||||||
|
|||||||
@@ -1232,11 +1232,6 @@ package android.media {
|
|||||||
method public void forceResourceLost();
|
method public void forceResourceLost();
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class MediaCodec implements android.media.metrics.PlaybackComponent {
|
|
||||||
method public String getPlaybackId();
|
|
||||||
method public void setPlaybackId(@NonNull String);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static final class MediaCodecInfo.VideoCapabilities.PerformancePoint {
|
public static final class MediaCodecInfo.VideoCapabilities.PerformancePoint {
|
||||||
ctor public MediaCodecInfo.VideoCapabilities.PerformancePoint(int, int, int, int, @NonNull android.util.Size);
|
ctor public MediaCodecInfo.VideoCapabilities.PerformancePoint(int, int, int, int, @NonNull android.util.Size);
|
||||||
ctor public MediaCodecInfo.VideoCapabilities.PerformancePoint(@NonNull android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint, @NonNull android.util.Size);
|
ctor public MediaCodecInfo.VideoCapabilities.PerformancePoint(@NonNull android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint, @NonNull android.util.Size);
|
||||||
@@ -1311,15 +1306,6 @@ package android.media.audiopolicy {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
package android.media.metrics {
|
|
||||||
|
|
||||||
public interface PlaybackComponent {
|
|
||||||
method @NonNull public String getPlaybackId();
|
|
||||||
method public void setPlaybackId(@NonNull String);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
package android.media.tv {
|
package android.media.tv {
|
||||||
|
|
||||||
public final class TvInputManager {
|
public final class TvInputManager {
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
package android.media.metrics;
|
package android.media.metrics;
|
||||||
|
|
||||||
import android.annotation.IntDef;
|
import android.annotation.IntDef;
|
||||||
|
import android.annotation.IntRange;
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
import android.annotation.Nullable;
|
import android.annotation.Nullable;
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
@@ -27,22 +28,30 @@ import java.lang.annotation.RetentionPolicy;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Playback network event.
|
* Media network event.
|
||||||
* @hide
|
|
||||||
*/
|
*/
|
||||||
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;
|
public static final int NETWORK_TYPE_NONE = 0;
|
||||||
|
/** Other network type */
|
||||||
public static final int NETWORK_TYPE_OTHER = 1;
|
public static final int NETWORK_TYPE_OTHER = 1;
|
||||||
|
/** Wi-Fi network */
|
||||||
public static final int NETWORK_TYPE_WIFI = 2;
|
public static final int NETWORK_TYPE_WIFI = 2;
|
||||||
|
/** Ethernet network */
|
||||||
public static final int NETWORK_TYPE_ETHERNET = 3;
|
public static final int NETWORK_TYPE_ETHERNET = 3;
|
||||||
|
/** 2G network */
|
||||||
public static final int NETWORK_TYPE_2G = 4;
|
public static final int NETWORK_TYPE_2G = 4;
|
||||||
|
/** 3G network */
|
||||||
public static final int NETWORK_TYPE_3G = 5;
|
public static final int NETWORK_TYPE_3G = 5;
|
||||||
|
/** 4G network */
|
||||||
public static final int NETWORK_TYPE_4G = 6;
|
public static final int NETWORK_TYPE_4G = 6;
|
||||||
|
/** 5G NSA network */
|
||||||
public static final int NETWORK_TYPE_5G_NSA = 7;
|
public static final int NETWORK_TYPE_5G_NSA = 7;
|
||||||
|
/** 5G SA network */
|
||||||
public static final int NETWORK_TYPE_5G_SA = 8;
|
public static final int NETWORK_TYPE_5G_SA = 8;
|
||||||
|
|
||||||
private final int mType;
|
private final int mNetworkType;
|
||||||
private final long mTimeSincePlaybackCreatedMillis;
|
private final long mTimeSinceCreatedMillis;
|
||||||
|
|
||||||
/** @hide */
|
/** @hide */
|
||||||
@IntDef(prefix = "NETWORK_TYPE_", value = {
|
@IntDef(prefix = "NETWORK_TYPE_", value = {
|
||||||
@@ -61,6 +70,7 @@ public final class NetworkEvent implements Parcelable {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Network type to string.
|
* Network type to string.
|
||||||
|
* @hide
|
||||||
*/
|
*/
|
||||||
public static String networkTypeToString(@NetworkType int value) {
|
public static String networkTypeToString(@NetworkType int value) {
|
||||||
switch (value) {
|
switch (value) {
|
||||||
@@ -92,25 +102,34 @@ public final class NetworkEvent implements Parcelable {
|
|||||||
*
|
*
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public NetworkEvent(@NetworkType int type, long timeSincePlaybackCreatedMillis) {
|
public NetworkEvent(@NetworkType int type, long timeSinceCreatedMillis) {
|
||||||
this.mType = type;
|
this.mNetworkType = type;
|
||||||
this.mTimeSincePlaybackCreatedMillis = timeSincePlaybackCreatedMillis;
|
this.mTimeSinceCreatedMillis = timeSinceCreatedMillis;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets network type.
|
||||||
|
*/
|
||||||
@NetworkType
|
@NetworkType
|
||||||
public int getType() {
|
public int getNetworkType() {
|
||||||
return mType;
|
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
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "NetworkEvent { "
|
return "NetworkEvent { "
|
||||||
+ "type = " + mType + ", "
|
+ "networkType = " + mNetworkType + ", "
|
||||||
+ "timeSincePlaybackCreatedMillis = " + mTimeSincePlaybackCreatedMillis
|
+ "timeSinceCreatedMillis = " + mTimeSinceCreatedMillis
|
||||||
+ " }";
|
+ " }";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -119,19 +138,19 @@ public final class NetworkEvent implements Parcelable {
|
|||||||
if (this == o) return true;
|
if (this == o) return true;
|
||||||
if (o == null || getClass() != o.getClass()) return false;
|
if (o == null || getClass() != o.getClass()) return false;
|
||||||
NetworkEvent that = (NetworkEvent) o;
|
NetworkEvent that = (NetworkEvent) o;
|
||||||
return mType == that.mType
|
return mNetworkType == that.mNetworkType
|
||||||
&& mTimeSincePlaybackCreatedMillis == that.mTimeSincePlaybackCreatedMillis;
|
&& mTimeSinceCreatedMillis == that.mTimeSinceCreatedMillis;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return Objects.hash(mType, mTimeSincePlaybackCreatedMillis);
|
return Objects.hash(mNetworkType, mTimeSinceCreatedMillis);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeToParcel(@NonNull android.os.Parcel dest, int flags) {
|
public void writeToParcel(@NonNull android.os.Parcel dest, int flags) {
|
||||||
dest.writeInt(mType);
|
dest.writeInt(mNetworkType);
|
||||||
dest.writeLong(mTimeSincePlaybackCreatedMillis);
|
dest.writeLong(mTimeSinceCreatedMillis);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -142,12 +161,15 @@ public final class NetworkEvent implements Parcelable {
|
|||||||
/** @hide */
|
/** @hide */
|
||||||
/* package-private */ NetworkEvent(@NonNull android.os.Parcel in) {
|
/* package-private */ NetworkEvent(@NonNull android.os.Parcel in) {
|
||||||
int type = in.readInt();
|
int type = in.readInt();
|
||||||
long timeSincePlaybackCreatedMillis = in.readLong();
|
long timeSinceCreatedMillis = in.readLong();
|
||||||
|
|
||||||
this.mType = type;
|
this.mNetworkType = type;
|
||||||
this.mTimeSincePlaybackCreatedMillis = timeSincePlaybackCreatedMillis;
|
this.mTimeSinceCreatedMillis = timeSinceCreatedMillis;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used to read a NetworkEvent from a Parcel.
|
||||||
|
*/
|
||||||
public static final @NonNull Parcelable.Creator<NetworkEvent> CREATOR =
|
public static final @NonNull Parcelable.Creator<NetworkEvent> CREATOR =
|
||||||
new Parcelable.Creator<NetworkEvent>() {
|
new Parcelable.Creator<NetworkEvent>() {
|
||||||
@Override
|
@Override
|
||||||
@@ -165,13 +187,11 @@ public final class NetworkEvent implements Parcelable {
|
|||||||
* A builder for {@link NetworkEvent}
|
* A builder for {@link NetworkEvent}
|
||||||
*/
|
*/
|
||||||
public static final class Builder {
|
public static final class Builder {
|
||||||
private int mType;
|
private int mNetworkType = NETWORK_TYPE_NONE;
|
||||||
private long mTimeSincePlaybackCreatedMillis;
|
private long mTimeSinceCreatedMillis = -1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new Builder.
|
* Creates a new Builder.
|
||||||
*
|
|
||||||
* @hide
|
|
||||||
*/
|
*/
|
||||||
public Builder() {
|
public Builder() {
|
||||||
}
|
}
|
||||||
@@ -179,24 +199,24 @@ public final class NetworkEvent implements Parcelable {
|
|||||||
/**
|
/**
|
||||||
* Sets network type.
|
* Sets network type.
|
||||||
*/
|
*/
|
||||||
public @NonNull Builder setType(@NetworkType int value) {
|
public @NonNull Builder setNetworkType(@NetworkType int value) {
|
||||||
mType = value;
|
mNetworkType = value;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets timestamp since the creation in milliseconds.
|
* 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) {
|
public @NonNull Builder setTimeSinceCreatedMillis(@IntRange(from = -1) long value) {
|
||||||
mTimeSincePlaybackCreatedMillis = value;
|
mTimeSinceCreatedMillis = value;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Builds the instance. */
|
/** Builds the instance. */
|
||||||
public @NonNull NetworkEvent build() {
|
public @NonNull NetworkEvent build() {
|
||||||
NetworkEvent o = new NetworkEvent(
|
NetworkEvent o = new NetworkEvent(mNetworkType, mTimeSinceCreatedMillis);
|
||||||
mType,
|
|
||||||
mTimeSincePlaybackCreatedMillis);
|
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,13 +17,10 @@
|
|||||||
package android.media.metrics;
|
package android.media.metrics;
|
||||||
|
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
import android.annotation.TestApi;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface for playback related components used by playback metrics.
|
* Interface for playback related components used by playback metrics.
|
||||||
* @hide
|
|
||||||
*/
|
*/
|
||||||
@TestApi
|
|
||||||
public interface PlaybackComponent {
|
public interface PlaybackComponent {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
package android.media.metrics;
|
package android.media.metrics;
|
||||||
|
|
||||||
import android.annotation.IntDef;
|
import android.annotation.IntDef;
|
||||||
|
import android.annotation.IntRange;
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
import android.annotation.Nullable;
|
import android.annotation.Nullable;
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
@@ -33,35 +34,57 @@ import java.util.Objects;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is used to store playback data.
|
* This class is used to store playback data.
|
||||||
* @hide
|
|
||||||
*/
|
*/
|
||||||
public final class PlaybackMetrics implements Parcelable {
|
public final class PlaybackMetrics implements Parcelable {
|
||||||
// TODO(b/177209128): JavaDoc for the constants.
|
/** Unknown stream source. */
|
||||||
public static final int STREAM_SOURCE_UNKNOWN = 0;
|
public static final int STREAM_SOURCE_UNKNOWN = 0;
|
||||||
|
/** Stream from network. */
|
||||||
public static final int STREAM_SOURCE_NETWORK = 1;
|
public static final int STREAM_SOURCE_NETWORK = 1;
|
||||||
|
/** Stream from device. */
|
||||||
public static final int STREAM_SOURCE_DEVICE = 2;
|
public static final int STREAM_SOURCE_DEVICE = 2;
|
||||||
|
/** Stream from more than one sources. */
|
||||||
public static final int STREAM_SOURCE_MIXED = 3;
|
public static final int STREAM_SOURCE_MIXED = 3;
|
||||||
|
|
||||||
|
/** Unknown stream type. */
|
||||||
public static final int STREAM_TYPE_UNKNOWN = 0;
|
public static final int STREAM_TYPE_UNKNOWN = 0;
|
||||||
|
/** Other stream type. */
|
||||||
public static final int STREAM_TYPE_OTHER = 1;
|
public static final int STREAM_TYPE_OTHER = 1;
|
||||||
|
/** Progressive stream type. */
|
||||||
public static final int STREAM_TYPE_PROGRESSIVE = 2;
|
public static final int STREAM_TYPE_PROGRESSIVE = 2;
|
||||||
|
/** DASH (Dynamic Adaptive Streaming over HTTP) stream type. */
|
||||||
public static final int STREAM_TYPE_DASH = 3;
|
public static final int STREAM_TYPE_DASH = 3;
|
||||||
|
/** HLS (HTTP Live Streaming) stream type. */
|
||||||
public static final int STREAM_TYPE_HLS = 4;
|
public static final int STREAM_TYPE_HLS = 4;
|
||||||
|
/** SS (HTTP Smooth Streaming) stream type. */
|
||||||
public static final int STREAM_TYPE_SS = 5;
|
public static final int STREAM_TYPE_SS = 5;
|
||||||
|
|
||||||
|
/** VOD (Video on Demand) playback type. */
|
||||||
public static final int PLAYBACK_TYPE_VOD = 0;
|
public static final int PLAYBACK_TYPE_VOD = 0;
|
||||||
|
/** Live playback type. */
|
||||||
public static final int PLAYBACK_TYPE_LIVE = 1;
|
public static final int PLAYBACK_TYPE_LIVE = 1;
|
||||||
|
/** Other playback type. */
|
||||||
public static final int PLAYBACK_TYPE_OTHER = 2;
|
public static final int PLAYBACK_TYPE_OTHER = 2;
|
||||||
|
|
||||||
|
/** DRM is not used. */
|
||||||
public static final int DRM_TYPE_NONE = 0;
|
public static final int DRM_TYPE_NONE = 0;
|
||||||
|
/** Other DRM type. */
|
||||||
public static final int DRM_TYPE_OTHER = 1;
|
public static final int DRM_TYPE_OTHER = 1;
|
||||||
|
/** Play ready DRM type. */
|
||||||
public static final int DRM_TYPE_PLAY_READY = 2;
|
public static final int DRM_TYPE_PLAY_READY = 2;
|
||||||
|
/** Widevine L1 DRM type. */
|
||||||
public static final int DRM_TYPE_WIDEVINE_L1 = 3;
|
public static final int DRM_TYPE_WIDEVINE_L1 = 3;
|
||||||
|
/** Widevine L3 DRM type. */
|
||||||
public static final int DRM_TYPE_WIDEVINE_L3 = 4;
|
public static final int DRM_TYPE_WIDEVINE_L3 = 4;
|
||||||
// TODO: add DRM_TYPE_CLEARKEY
|
/** Widevine L3 fallback DRM type. */
|
||||||
|
public static final int DRM_TYPE_WV_L3_FALLBACK = 5;
|
||||||
|
/** Clear key DRM type. */
|
||||||
|
public static final int DRM_TYPE_CLEARKEY = 6;
|
||||||
|
|
||||||
|
/** Main contents. */
|
||||||
public static final int CONTENT_TYPE_MAIN = 0;
|
public static final int CONTENT_TYPE_MAIN = 0;
|
||||||
|
/** Advertisement contents. */
|
||||||
public static final int CONTENT_TYPE_AD = 1;
|
public static final int CONTENT_TYPE_AD = 1;
|
||||||
|
/** Other contents. */
|
||||||
public static final int CONTENT_TYPE_OTHER = 2;
|
public static final int CONTENT_TYPE_OTHER = 2;
|
||||||
|
|
||||||
|
|
||||||
@@ -102,7 +125,9 @@ public final class PlaybackMetrics implements Parcelable {
|
|||||||
DRM_TYPE_OTHER,
|
DRM_TYPE_OTHER,
|
||||||
DRM_TYPE_PLAY_READY,
|
DRM_TYPE_PLAY_READY,
|
||||||
DRM_TYPE_WIDEVINE_L1,
|
DRM_TYPE_WIDEVINE_L1,
|
||||||
DRM_TYPE_WIDEVINE_L3
|
DRM_TYPE_WIDEVINE_L3,
|
||||||
|
DRM_TYPE_WV_L3_FALLBACK,
|
||||||
|
DRM_TYPE_CLEARKEY
|
||||||
})
|
})
|
||||||
@Retention(RetentionPolicy.SOURCE)
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
public @interface DrmType {}
|
public @interface DrmType {}
|
||||||
@@ -173,6 +198,11 @@ public final class PlaybackMetrics implements Parcelable {
|
|||||||
this.mNetworkTransferDurationMillis = networkTransferDurationMillis;
|
this.mNetworkTransferDurationMillis = networkTransferDurationMillis;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the media duration in milliseconds.
|
||||||
|
* @return the media duration in milliseconds, or -1 if unknown.
|
||||||
|
*/
|
||||||
|
@IntRange(from = -1)
|
||||||
public long getMediaDurationMillis() {
|
public long getMediaDurationMillis() {
|
||||||
return mMediaDurationMillis;
|
return mMediaDurationMillis;
|
||||||
}
|
}
|
||||||
@@ -241,28 +271,36 @@ public final class PlaybackMetrics implements Parcelable {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets video frames played.
|
* Gets video frames played.
|
||||||
|
* @return the video frames played, or -1 if unknown.
|
||||||
*/
|
*/
|
||||||
|
@IntRange(from = -1, to = Integer.MAX_VALUE)
|
||||||
public int getVideoFramesPlayed() {
|
public int getVideoFramesPlayed() {
|
||||||
return mVideoFramesPlayed;
|
return mVideoFramesPlayed;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets video frames dropped.
|
* Gets video frames dropped.
|
||||||
|
* @return the video frames dropped, or -1 if unknown.
|
||||||
*/
|
*/
|
||||||
|
@IntRange(from = -1, to = Integer.MAX_VALUE)
|
||||||
public int getVideoFramesDropped() {
|
public int getVideoFramesDropped() {
|
||||||
return mVideoFramesDropped;
|
return mVideoFramesDropped;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets audio underrun count.
|
* Gets audio underrun count.
|
||||||
|
* @return the audio underrun count, or -1 if unknown.
|
||||||
*/
|
*/
|
||||||
|
@IntRange(from = -1, to = Integer.MAX_VALUE)
|
||||||
public int getAudioUnderrunCount() {
|
public int getAudioUnderrunCount() {
|
||||||
return mAudioUnderrunCount;
|
return mAudioUnderrunCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets number of network bytes read.
|
* Gets number of network bytes read.
|
||||||
|
* @return the number of network bytes read, or -1 if unknown.
|
||||||
*/
|
*/
|
||||||
|
@IntRange(from = -1)
|
||||||
public long getNetworkBytesRead() {
|
public long getNetworkBytesRead() {
|
||||||
return mNetworkBytesRead;
|
return mNetworkBytesRead;
|
||||||
}
|
}
|
||||||
@@ -270,6 +308,7 @@ public final class PlaybackMetrics implements Parcelable {
|
|||||||
/**
|
/**
|
||||||
* Gets number of local bytes read.
|
* Gets number of local bytes read.
|
||||||
*/
|
*/
|
||||||
|
@IntRange(from = -1)
|
||||||
public long getLocalBytesRead() {
|
public long getLocalBytesRead() {
|
||||||
return mLocalBytesRead;
|
return mLocalBytesRead;
|
||||||
}
|
}
|
||||||
@@ -277,6 +316,7 @@ public final class PlaybackMetrics implements Parcelable {
|
|||||||
/**
|
/**
|
||||||
* Gets network transfer duration in milliseconds.
|
* Gets network transfer duration in milliseconds.
|
||||||
*/
|
*/
|
||||||
|
@IntRange(from = -1)
|
||||||
public long getNetworkTransferDurationMillis() {
|
public long getNetworkTransferDurationMillis() {
|
||||||
return mNetworkTransferDurationMillis;
|
return mNetworkTransferDurationMillis;
|
||||||
}
|
}
|
||||||
@@ -415,34 +455,33 @@ public final class PlaybackMetrics implements Parcelable {
|
|||||||
*/
|
*/
|
||||||
public static final class Builder {
|
public static final class Builder {
|
||||||
|
|
||||||
private long mMediaDurationMillis;
|
private long mMediaDurationMillis = -1;
|
||||||
private int mStreamSource;
|
private int mStreamSource = STREAM_SOURCE_UNKNOWN;
|
||||||
private int mStreamType;
|
private int mStreamType = STREAM_TYPE_UNKNOWN;
|
||||||
private int mPlaybackType;
|
private int mPlaybackType = PLAYBACK_TYPE_OTHER;
|
||||||
private int mDrmType;
|
private int mDrmType = DRM_TYPE_NONE;
|
||||||
private int mContentType;
|
private int mContentType = CONTENT_TYPE_OTHER;
|
||||||
private @Nullable String mPlayerName;
|
private @Nullable String mPlayerName;
|
||||||
private @Nullable String mPlayerVersion;
|
private @Nullable String mPlayerVersion;
|
||||||
private @NonNull List<Long> mExperimentIds = new ArrayList<>();
|
private @NonNull List<Long> mExperimentIds = new ArrayList<>();
|
||||||
private int mVideoFramesPlayed;
|
private int mVideoFramesPlayed = -1;
|
||||||
private int mVideoFramesDropped;
|
private int mVideoFramesDropped = -1;
|
||||||
private int mAudioUnderrunCount;
|
private int mAudioUnderrunCount = -1;
|
||||||
private long mNetworkBytesRead;
|
private long mNetworkBytesRead = -1;
|
||||||
private long mLocalBytesRead;
|
private long mLocalBytesRead = -1;
|
||||||
private long mNetworkTransferDurationMillis;
|
private long mNetworkTransferDurationMillis = -1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new Builder.
|
* Creates a new Builder.
|
||||||
*
|
|
||||||
* @hide
|
|
||||||
*/
|
*/
|
||||||
public Builder() {
|
public Builder() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the media duration in milliseconds.
|
* Sets the media duration in milliseconds.
|
||||||
|
* @param value the media duration in milliseconds. -1 indicates the value is unknown.
|
||||||
*/
|
*/
|
||||||
public @NonNull Builder setMediaDurationMillis(long value) {
|
public @NonNull Builder setMediaDurationMillis(@IntRange(from = -1) long value) {
|
||||||
mMediaDurationMillis = value;
|
mMediaDurationMillis = value;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -474,7 +513,7 @@ public final class PlaybackMetrics implements Parcelable {
|
|||||||
/**
|
/**
|
||||||
* Sets the DRM type.
|
* Sets the DRM type.
|
||||||
*/
|
*/
|
||||||
public @NonNull Builder setDrmType(@StreamType int value) {
|
public @NonNull Builder setDrmType(@DrmType int value) {
|
||||||
mDrmType = value;
|
mDrmType = value;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -513,48 +552,58 @@ public final class PlaybackMetrics implements Parcelable {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the video frames played.
|
* Sets the video frames played.
|
||||||
|
* @param value the video frames played. -1 indicates the value is unknown.
|
||||||
*/
|
*/
|
||||||
public @NonNull Builder setVideoFramesPlayed(int value) {
|
public @NonNull Builder setVideoFramesPlayed(
|
||||||
|
@IntRange(from = -1, to = Integer.MAX_VALUE) int value) {
|
||||||
mVideoFramesPlayed = value;
|
mVideoFramesPlayed = value;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the video frames dropped.
|
* Sets the video frames dropped.
|
||||||
|
* @param value the video frames dropped. -1 indicates the value is unknown.
|
||||||
*/
|
*/
|
||||||
public @NonNull Builder setVideoFramesDropped(int value) {
|
public @NonNull Builder setVideoFramesDropped(
|
||||||
|
@IntRange(from = -1, to = Integer.MAX_VALUE) int value) {
|
||||||
mVideoFramesDropped = value;
|
mVideoFramesDropped = value;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the audio underrun count.
|
* Sets the audio underrun count.
|
||||||
|
* @param value the audio underrun count. -1 indicates the value is unknown.
|
||||||
*/
|
*/
|
||||||
public @NonNull Builder setAudioUnderrunCount(int value) {
|
public @NonNull Builder setAudioUnderrunCount(
|
||||||
|
@IntRange(from = -1, to = Integer.MAX_VALUE) int value) {
|
||||||
mAudioUnderrunCount = value;
|
mAudioUnderrunCount = value;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the number of network bytes read.
|
* Sets the number of network bytes read.
|
||||||
|
* @param value the number of network bytes read. -1 indicates the value is unknown.
|
||||||
*/
|
*/
|
||||||
public @NonNull Builder setNetworkBytesRead(long value) {
|
public @NonNull Builder setNetworkBytesRead(@IntRange(from = -1) long value) {
|
||||||
mNetworkBytesRead = value;
|
mNetworkBytesRead = value;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the number of local bytes read.
|
* Sets the number of local bytes read.
|
||||||
|
* @param value the number of local bytes read. -1 indicates the value is unknown.
|
||||||
*/
|
*/
|
||||||
public @NonNull Builder setLocalBytesRead(long value) {
|
public @NonNull Builder setLocalBytesRead(@IntRange(from = -1) long value) {
|
||||||
mLocalBytesRead = value;
|
mLocalBytesRead = value;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the network transfer duration in milliseconds.
|
* Sets the network transfer duration in milliseconds.
|
||||||
|
* @param value the network transfer duration in milliseconds.
|
||||||
|
* -1 indicates the value is unknown.
|
||||||
*/
|
*/
|
||||||
public @NonNull Builder setNetworkTransferDurationMillis(long value) {
|
public @NonNull Builder setNetworkTransferDurationMillis(@IntRange(from = -1) long value) {
|
||||||
mNetworkTransferDurationMillis = value;
|
mNetworkTransferDurationMillis = value;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,7 +45,6 @@ public final class PlaybackSession implements AutoCloseable {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Reports playback metrics.
|
* Reports playback metrics.
|
||||||
* @hide
|
|
||||||
*/
|
*/
|
||||||
public void reportPlaybackMetrics(@NonNull PlaybackMetrics metrics) {
|
public void reportPlaybackMetrics(@NonNull PlaybackMetrics metrics) {
|
||||||
mManager.reportPlaybackMetrics(mId, metrics);
|
mManager.reportPlaybackMetrics(mId, metrics);
|
||||||
@@ -60,9 +59,8 @@ public final class PlaybackSession implements AutoCloseable {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Reports network event.
|
* Reports network event.
|
||||||
* @hide
|
|
||||||
*/
|
*/
|
||||||
public void reportNetworkEvent(NetworkEvent event) {
|
public void reportNetworkEvent(@NonNull NetworkEvent event) {
|
||||||
mManager.reportNetworkEvent(mId, event);
|
mManager.reportNetworkEvent(mId, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -75,9 +73,8 @@ public final class PlaybackSession implements AutoCloseable {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Reports track change event.
|
* Reports track change event.
|
||||||
* @hide
|
|
||||||
*/
|
*/
|
||||||
public void reportTrackChangeEvent(TrackChangeEvent event) {
|
public void reportTrackChangeEvent(@NonNull TrackChangeEvent event) {
|
||||||
mManager.reportTrackChangeEvent(mId, event);
|
mManager.reportTrackChangeEvent(mId, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
package android.media.metrics;
|
package android.media.metrics;
|
||||||
|
|
||||||
import android.annotation.IntDef;
|
import android.annotation.IntDef;
|
||||||
|
import android.annotation.IntRange;
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
import android.annotation.Nullable;
|
import android.annotation.Nullable;
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
@@ -28,20 +29,29 @@ import java.util.Objects;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Playback track change event.
|
* Playback track change event.
|
||||||
* @hide
|
|
||||||
*/
|
*/
|
||||||
public final class TrackChangeEvent implements Parcelable {
|
public final class TrackChangeEvent extends Event implements Parcelable {
|
||||||
|
/** The track is off. */
|
||||||
public static final int TRACK_STATE_OFF = 0;
|
public static final int TRACK_STATE_OFF = 0;
|
||||||
|
/** The track is on. */
|
||||||
public static final int TRACK_STATE_ON = 1;
|
public static final int TRACK_STATE_ON = 1;
|
||||||
|
|
||||||
|
/** Unknown track change reason. */
|
||||||
public static final int TRACK_CHANGE_REASON_UNKNOWN = 0;
|
public static final int TRACK_CHANGE_REASON_UNKNOWN = 0;
|
||||||
|
/** Other track change reason. */
|
||||||
public static final int TRACK_CHANGE_REASON_OTHER = 1;
|
public static final int TRACK_CHANGE_REASON_OTHER = 1;
|
||||||
|
/** Track change reason for initial state. */
|
||||||
public static final int TRACK_CHANGE_REASON_INITIAL = 2;
|
public static final int TRACK_CHANGE_REASON_INITIAL = 2;
|
||||||
|
/** Track change reason for manual changes. */
|
||||||
public static final int TRACK_CHANGE_REASON_MANUAL = 3;
|
public static final int TRACK_CHANGE_REASON_MANUAL = 3;
|
||||||
|
/** Track change reason for adaptive changes. */
|
||||||
public static final int TRACK_CHANGE_REASON_ADAPTIVE = 4;
|
public static final int TRACK_CHANGE_REASON_ADAPTIVE = 4;
|
||||||
|
|
||||||
|
/** Audio track. */
|
||||||
public static final int TRACK_TYPE_AUDIO = 0;
|
public static final int TRACK_TYPE_AUDIO = 0;
|
||||||
|
/** Video track. */
|
||||||
public static final int TRACK_TYPE_VIDEO = 1;
|
public static final int TRACK_TYPE_VIDEO = 1;
|
||||||
|
/** Text track. */
|
||||||
public static final int TRACK_TYPE_TEXT = 2;
|
public static final int TRACK_TYPE_TEXT = 2;
|
||||||
|
|
||||||
private final int mState;
|
private final int mState;
|
||||||
@@ -50,7 +60,7 @@ public final class TrackChangeEvent implements Parcelable {
|
|||||||
private final @Nullable String mSampleMimeType;
|
private final @Nullable String mSampleMimeType;
|
||||||
private final @Nullable String mCodecName;
|
private final @Nullable String mCodecName;
|
||||||
private final int mBitrate;
|
private final int mBitrate;
|
||||||
private final long mTimeSincePlaybackCreatedMillis;
|
private final long mTimeSinceCreatedMillis;
|
||||||
private final int mType;
|
private final int mType;
|
||||||
private final @Nullable String mLanguage;
|
private final @Nullable String mLanguage;
|
||||||
private final @Nullable String mLanguageRegion;
|
private final @Nullable String mLanguageRegion;
|
||||||
@@ -96,7 +106,7 @@ public final class TrackChangeEvent implements Parcelable {
|
|||||||
@Nullable String sampleMimeType,
|
@Nullable String sampleMimeType,
|
||||||
@Nullable String codecName,
|
@Nullable String codecName,
|
||||||
int bitrate,
|
int bitrate,
|
||||||
long timeSincePlaybackCreatedMillis,
|
long timeSinceCreatedMillis,
|
||||||
int type,
|
int type,
|
||||||
@Nullable String language,
|
@Nullable String language,
|
||||||
@Nullable String languageRegion,
|
@Nullable String languageRegion,
|
||||||
@@ -110,7 +120,7 @@ public final class TrackChangeEvent implements Parcelable {
|
|||||||
this.mSampleMimeType = sampleMimeType;
|
this.mSampleMimeType = sampleMimeType;
|
||||||
this.mCodecName = codecName;
|
this.mCodecName = codecName;
|
||||||
this.mBitrate = bitrate;
|
this.mBitrate = bitrate;
|
||||||
this.mTimeSincePlaybackCreatedMillis = timeSincePlaybackCreatedMillis;
|
this.mTimeSinceCreatedMillis = timeSinceCreatedMillis;
|
||||||
this.mType = type;
|
this.mType = type;
|
||||||
this.mLanguage = language;
|
this.mLanguage = language;
|
||||||
this.mLanguageRegion = languageRegion;
|
this.mLanguageRegion = languageRegion;
|
||||||
@@ -120,34 +130,60 @@ public final class TrackChangeEvent implements Parcelable {
|
|||||||
this.mHeight = height;
|
this.mHeight = height;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets track state.
|
||||||
|
*/
|
||||||
@TrackState
|
@TrackState
|
||||||
public int getTrackState() {
|
public int getTrackState() {
|
||||||
return mState;
|
return mState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets track change reason.
|
||||||
|
*/
|
||||||
@TrackChangeReason
|
@TrackChangeReason
|
||||||
public int getTrackChangeReason() {
|
public int getTrackChangeReason() {
|
||||||
return mReason;
|
return mReason;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets container MIME type.
|
||||||
|
*/
|
||||||
public @Nullable String getContainerMimeType() {
|
public @Nullable String getContainerMimeType() {
|
||||||
return mContainerMimeType;
|
return mContainerMimeType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the MIME type of the video/audio/text samples.
|
||||||
|
*/
|
||||||
public @Nullable String getSampleMimeType() {
|
public @Nullable String getSampleMimeType() {
|
||||||
return mSampleMimeType;
|
return mSampleMimeType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets codec name.
|
||||||
|
*/
|
||||||
public @Nullable String getCodecName() {
|
public @Nullable String getCodecName() {
|
||||||
return mCodecName;
|
return mCodecName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets bitrate.
|
||||||
|
* @return the bitrate, or -1 if unknown.
|
||||||
|
*/
|
||||||
|
@IntRange(from = -1, to = Integer.MAX_VALUE)
|
||||||
public int getBitrate() {
|
public int getBitrate() {
|
||||||
return mBitrate;
|
return mBitrate;
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@TrackType
|
@TrackType
|
||||||
@@ -155,26 +191,55 @@ public final class TrackChangeEvent implements Parcelable {
|
|||||||
return mType;
|
return mType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets language code.
|
||||||
|
* @return a two-letter ISO 639-1 language code.
|
||||||
|
*/
|
||||||
public @Nullable String getLanguage() {
|
public @Nullable String getLanguage() {
|
||||||
return mLanguage;
|
return mLanguage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets language region code.
|
||||||
|
* @return an IETF BCP 47 optional language region subtag based on a two-letter country code.
|
||||||
|
*/
|
||||||
public @Nullable String getLanguageRegion() {
|
public @Nullable String getLanguageRegion() {
|
||||||
return mLanguageRegion;
|
return mLanguageRegion;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets channel count.
|
||||||
|
* @return the channel count, or -1 if unknown.
|
||||||
|
*/
|
||||||
|
@IntRange(from = -1, to = Integer.MAX_VALUE)
|
||||||
public int getChannelCount() {
|
public int getChannelCount() {
|
||||||
return mChannelCount;
|
return mChannelCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets sample rate.
|
||||||
|
* @return the sample rate, or -1 if unknown.
|
||||||
|
*/
|
||||||
|
@IntRange(from = -1, to = Integer.MAX_VALUE)
|
||||||
public int getSampleRate() {
|
public int getSampleRate() {
|
||||||
return mSampleRate;
|
return mSampleRate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets video width.
|
||||||
|
* @return the video width, or -1 if unknown.
|
||||||
|
*/
|
||||||
|
@IntRange(from = -1, to = Integer.MAX_VALUE)
|
||||||
public int getWidth() {
|
public int getWidth() {
|
||||||
return mWidth;
|
return mWidth;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets video height.
|
||||||
|
* @return the video height, or -1 if unknown.
|
||||||
|
*/
|
||||||
|
@IntRange(from = -1, to = Integer.MAX_VALUE)
|
||||||
public int getHeight() {
|
public int getHeight() {
|
||||||
return mHeight;
|
return mHeight;
|
||||||
}
|
}
|
||||||
@@ -194,7 +259,7 @@ public final class TrackChangeEvent implements Parcelable {
|
|||||||
if (mSampleMimeType != null) dest.writeString(mSampleMimeType);
|
if (mSampleMimeType != null) dest.writeString(mSampleMimeType);
|
||||||
if (mCodecName != null) dest.writeString(mCodecName);
|
if (mCodecName != null) dest.writeString(mCodecName);
|
||||||
dest.writeInt(mBitrate);
|
dest.writeInt(mBitrate);
|
||||||
dest.writeLong(mTimeSincePlaybackCreatedMillis);
|
dest.writeLong(mTimeSinceCreatedMillis);
|
||||||
dest.writeInt(mType);
|
dest.writeInt(mType);
|
||||||
if (mLanguage != null) dest.writeString(mLanguage);
|
if (mLanguage != null) dest.writeString(mLanguage);
|
||||||
if (mLanguageRegion != null) dest.writeString(mLanguageRegion);
|
if (mLanguageRegion != null) dest.writeString(mLanguageRegion);
|
||||||
@@ -218,7 +283,7 @@ public final class TrackChangeEvent implements Parcelable {
|
|||||||
String sampleMimeType = (flg & 0x8) == 0 ? null : in.readString();
|
String sampleMimeType = (flg & 0x8) == 0 ? null : in.readString();
|
||||||
String codecName = (flg & 0x10) == 0 ? null : in.readString();
|
String codecName = (flg & 0x10) == 0 ? null : in.readString();
|
||||||
int bitrate = in.readInt();
|
int bitrate = in.readInt();
|
||||||
long timeSincePlaybackCreatedMillis = in.readLong();
|
long timeSinceCreatedMillis = in.readLong();
|
||||||
int type = in.readInt();
|
int type = in.readInt();
|
||||||
String language = (flg & 0x100) == 0 ? null : in.readString();
|
String language = (flg & 0x100) == 0 ? null : in.readString();
|
||||||
String languageRegion = (flg & 0x200) == 0 ? null : in.readString();
|
String languageRegion = (flg & 0x200) == 0 ? null : in.readString();
|
||||||
@@ -233,7 +298,7 @@ public final class TrackChangeEvent implements Parcelable {
|
|||||||
this.mSampleMimeType = sampleMimeType;
|
this.mSampleMimeType = sampleMimeType;
|
||||||
this.mCodecName = codecName;
|
this.mCodecName = codecName;
|
||||||
this.mBitrate = bitrate;
|
this.mBitrate = bitrate;
|
||||||
this.mTimeSincePlaybackCreatedMillis = timeSincePlaybackCreatedMillis;
|
this.mTimeSinceCreatedMillis = timeSinceCreatedMillis;
|
||||||
this.mType = type;
|
this.mType = type;
|
||||||
this.mLanguage = language;
|
this.mLanguage = language;
|
||||||
this.mLanguageRegion = languageRegion;
|
this.mLanguageRegion = languageRegion;
|
||||||
@@ -256,38 +321,24 @@ public final class TrackChangeEvent implements Parcelable {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Code below generated by codegen v1.0.22.
|
|
||||||
//
|
|
||||||
// DO NOT MODIFY!
|
|
||||||
// CHECKSTYLE:OFF Generated code
|
|
||||||
//
|
|
||||||
// To regenerate run:
|
|
||||||
// $ codegen $ANDROID_BUILD_TOP/frameworks/base/media/java/android/media/metrics/TrackChangeEvent.java
|
|
||||||
//
|
|
||||||
// To exclude the generated code from IntelliJ auto-formatting enable (one-time):
|
|
||||||
// Settings > Editor > Code Style > Formatter Control
|
|
||||||
//@formatter:off
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "TrackChangeEvent { " +
|
return "TrackChangeEvent { "
|
||||||
"state = " + mState + ", " +
|
+ "state = " + mState + ", "
|
||||||
"reason = " + mReason + ", " +
|
+ "reason = " + mReason + ", "
|
||||||
"containerMimeType = " + mContainerMimeType + ", " +
|
+ "containerMimeType = " + mContainerMimeType + ", "
|
||||||
"sampleMimeType = " + mSampleMimeType + ", " +
|
+ "sampleMimeType = " + mSampleMimeType + ", "
|
||||||
"codecName = " + mCodecName + ", " +
|
+ "codecName = " + mCodecName + ", "
|
||||||
"bitrate = " + mBitrate + ", " +
|
+ "bitrate = " + mBitrate + ", "
|
||||||
"timeSincePlaybackCreatedMillis = " + mTimeSincePlaybackCreatedMillis + ", " +
|
+ "timeSinceCreatedMillis = " + mTimeSinceCreatedMillis + ", "
|
||||||
"type = " + mType + ", " +
|
+ "type = " + mType + ", "
|
||||||
"language = " + mLanguage + ", " +
|
+ "language = " + mLanguage + ", "
|
||||||
"languageRegion = " + mLanguageRegion + ", " +
|
+ "languageRegion = " + mLanguageRegion + ", "
|
||||||
"channelCount = " + mChannelCount + ", " +
|
+ "channelCount = " + mChannelCount + ", "
|
||||||
"sampleRate = " + mSampleRate + ", " +
|
+ "sampleRate = " + mSampleRate + ", "
|
||||||
"width = " + mWidth + ", " +
|
+ "width = " + mWidth + ", "
|
||||||
"height = " + mHeight +
|
+ "height = " + mHeight
|
||||||
" }";
|
+ " }";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -301,7 +352,7 @@ public final class TrackChangeEvent implements Parcelable {
|
|||||||
&& Objects.equals(mSampleMimeType, that.mSampleMimeType)
|
&& Objects.equals(mSampleMimeType, that.mSampleMimeType)
|
||||||
&& Objects.equals(mCodecName, that.mCodecName)
|
&& Objects.equals(mCodecName, that.mCodecName)
|
||||||
&& mBitrate == that.mBitrate
|
&& mBitrate == that.mBitrate
|
||||||
&& mTimeSincePlaybackCreatedMillis == that.mTimeSincePlaybackCreatedMillis
|
&& mTimeSinceCreatedMillis == that.mTimeSinceCreatedMillis
|
||||||
&& mType == that.mType
|
&& mType == that.mType
|
||||||
&& Objects.equals(mLanguage, that.mLanguage)
|
&& Objects.equals(mLanguage, that.mLanguage)
|
||||||
&& Objects.equals(mLanguageRegion, that.mLanguageRegion)
|
&& Objects.equals(mLanguageRegion, that.mLanguageRegion)
|
||||||
@@ -314,7 +365,7 @@ public final class TrackChangeEvent implements Parcelable {
|
|||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return Objects.hash(mState, mReason, mContainerMimeType, mSampleMimeType, mCodecName,
|
return Objects.hash(mState, mReason, mContainerMimeType, mSampleMimeType, mCodecName,
|
||||||
mBitrate, mTimeSincePlaybackCreatedMillis, mType, mLanguage, mLanguageRegion,
|
mBitrate, mTimeSinceCreatedMillis, mType, mLanguage, mLanguageRegion,
|
||||||
mChannelCount, mSampleRate, mWidth, mHeight);
|
mChannelCount, mSampleRate, mWidth, mHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -323,32 +374,33 @@ public final class TrackChangeEvent implements Parcelable {
|
|||||||
*/
|
*/
|
||||||
public static final class Builder {
|
public static final class Builder {
|
||||||
// TODO: check track type for the setters.
|
// TODO: check track type for the setters.
|
||||||
private int mState;
|
private int mState = TRACK_STATE_OFF;
|
||||||
private int mReason;
|
private int mReason = TRACK_CHANGE_REASON_UNKNOWN;
|
||||||
private @Nullable String mContainerMimeType;
|
private @Nullable String mContainerMimeType;
|
||||||
private @Nullable String mSampleMimeType;
|
private @Nullable String mSampleMimeType;
|
||||||
private @Nullable String mCodecName;
|
private @Nullable String mCodecName;
|
||||||
private int mBitrate;
|
private int mBitrate = -1;
|
||||||
private long mTimeSincePlaybackCreatedMillis;
|
private long mTimeSinceCreatedMillis = -1;
|
||||||
private int mType;
|
private final int mType;
|
||||||
private @Nullable String mLanguage;
|
private @Nullable String mLanguage;
|
||||||
private @Nullable String mLanguageRegion;
|
private @Nullable String mLanguageRegion;
|
||||||
private int mChannelCount;
|
private int mChannelCount = -1;
|
||||||
private int mSampleRate;
|
private int mSampleRate = -1;
|
||||||
private int mWidth;
|
private int mWidth = -1;
|
||||||
private int mHeight;
|
private int mHeight = -1;
|
||||||
|
|
||||||
private long mBuilderFieldsSet = 0L;
|
private long mBuilderFieldsSet = 0L;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new Builder.
|
* Creates a new Builder.
|
||||||
*
|
|
||||||
* @hide
|
|
||||||
*/
|
*/
|
||||||
public Builder(int type) {
|
public Builder(int type) {
|
||||||
mType = type;
|
mType = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets track state.
|
||||||
|
*/
|
||||||
public @NonNull Builder setTrackState(@TrackState int value) {
|
public @NonNull Builder setTrackState(@TrackState int value) {
|
||||||
checkNotUsed();
|
checkNotUsed();
|
||||||
mBuilderFieldsSet |= 0x1;
|
mBuilderFieldsSet |= 0x1;
|
||||||
@@ -356,6 +408,9 @@ public final class TrackChangeEvent implements Parcelable {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets track change reason.
|
||||||
|
*/
|
||||||
public @NonNull Builder setTrackChangeReason(@TrackChangeReason int value) {
|
public @NonNull Builder setTrackChangeReason(@TrackChangeReason int value) {
|
||||||
checkNotUsed();
|
checkNotUsed();
|
||||||
mBuilderFieldsSet |= 0x2;
|
mBuilderFieldsSet |= 0x2;
|
||||||
@@ -363,6 +418,9 @@ public final class TrackChangeEvent implements Parcelable {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets container MIME type.
|
||||||
|
*/
|
||||||
public @NonNull Builder setContainerMimeType(@NonNull String value) {
|
public @NonNull Builder setContainerMimeType(@NonNull String value) {
|
||||||
checkNotUsed();
|
checkNotUsed();
|
||||||
mBuilderFieldsSet |= 0x4;
|
mBuilderFieldsSet |= 0x4;
|
||||||
@@ -370,6 +428,9 @@ public final class TrackChangeEvent implements Parcelable {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the MIME type of the video/audio/text samples.
|
||||||
|
*/
|
||||||
public @NonNull Builder setSampleMimeType(@NonNull String value) {
|
public @NonNull Builder setSampleMimeType(@NonNull String value) {
|
||||||
checkNotUsed();
|
checkNotUsed();
|
||||||
mBuilderFieldsSet |= 0x8;
|
mBuilderFieldsSet |= 0x8;
|
||||||
@@ -377,6 +438,9 @@ public final class TrackChangeEvent implements Parcelable {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets codec name.
|
||||||
|
*/
|
||||||
public @NonNull Builder setCodecName(@NonNull String value) {
|
public @NonNull Builder setCodecName(@NonNull String value) {
|
||||||
checkNotUsed();
|
checkNotUsed();
|
||||||
mBuilderFieldsSet |= 0x10;
|
mBuilderFieldsSet |= 0x10;
|
||||||
@@ -384,27 +448,33 @@ public final class TrackChangeEvent implements Parcelable {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public @NonNull Builder setBitrate(int value) {
|
/**
|
||||||
|
* Sets bitrate in bits per second.
|
||||||
|
* @param value the bitrate in bits per second. -1 indicates the value is unknown.
|
||||||
|
*/
|
||||||
|
public @NonNull Builder setBitrate(@IntRange(from = -1, to = Integer.MAX_VALUE) int value) {
|
||||||
checkNotUsed();
|
checkNotUsed();
|
||||||
mBuilderFieldsSet |= 0x20;
|
mBuilderFieldsSet |= 0x20;
|
||||||
mBitrate = value;
|
mBitrate = value;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public @NonNull Builder setTimeSincePlaybackCreatedMillis(long value) {
|
/**
|
||||||
|
* 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 setTimeSinceCreatedMillis(@IntRange(from = -1) long value) {
|
||||||
checkNotUsed();
|
checkNotUsed();
|
||||||
mBuilderFieldsSet |= 0x40;
|
mBuilderFieldsSet |= 0x40;
|
||||||
mTimeSincePlaybackCreatedMillis = value;
|
mTimeSinceCreatedMillis = value;
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public @NonNull Builder setTrackType(@TrackType int value) {
|
|
||||||
checkNotUsed();
|
|
||||||
mBuilderFieldsSet |= 0x80;
|
|
||||||
mType = value;
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets language code.
|
||||||
|
* @param value a two-letter ISO 639-1 language code.
|
||||||
|
*/
|
||||||
public @NonNull Builder setLanguage(@NonNull String value) {
|
public @NonNull Builder setLanguage(@NonNull String value) {
|
||||||
checkNotUsed();
|
checkNotUsed();
|
||||||
mBuilderFieldsSet |= 0x100;
|
mBuilderFieldsSet |= 0x100;
|
||||||
@@ -412,6 +482,11 @@ public final class TrackChangeEvent implements Parcelable {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets language region code.
|
||||||
|
* @param value an IETF BCP 47 optional language region subtag based on a two-letter country
|
||||||
|
* code.
|
||||||
|
*/
|
||||||
public @NonNull Builder setLanguageRegion(@NonNull String value) {
|
public @NonNull Builder setLanguageRegion(@NonNull String value) {
|
||||||
checkNotUsed();
|
checkNotUsed();
|
||||||
mBuilderFieldsSet |= 0x200;
|
mBuilderFieldsSet |= 0x200;
|
||||||
@@ -419,28 +494,46 @@ public final class TrackChangeEvent implements Parcelable {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public @NonNull Builder setChannelCount(int value) {
|
/**
|
||||||
|
* Sets channel count.
|
||||||
|
* @param value the channel count. -1 indicates the value is unknown.
|
||||||
|
*/
|
||||||
|
public @NonNull Builder setChannelCount(
|
||||||
|
@IntRange(from = -1, to = Integer.MAX_VALUE) int value) {
|
||||||
checkNotUsed();
|
checkNotUsed();
|
||||||
mBuilderFieldsSet |= 0x400;
|
mBuilderFieldsSet |= 0x400;
|
||||||
mChannelCount = value;
|
mChannelCount = value;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public @NonNull Builder setSampleRate(int value) {
|
/**
|
||||||
|
* Sets sample rate.
|
||||||
|
* @param value the sample rate. -1 indicates the value is unknown.
|
||||||
|
*/
|
||||||
|
public @NonNull Builder setSampleRate(
|
||||||
|
@IntRange(from = -1, to = Integer.MAX_VALUE) int value) {
|
||||||
checkNotUsed();
|
checkNotUsed();
|
||||||
mBuilderFieldsSet |= 0x800;
|
mBuilderFieldsSet |= 0x800;
|
||||||
mSampleRate = value;
|
mSampleRate = value;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public @NonNull Builder setWidth(int value) {
|
/**
|
||||||
|
* Sets video width.
|
||||||
|
* @param value the video width. -1 indicates the value is unknown.
|
||||||
|
*/
|
||||||
|
public @NonNull Builder setWidth(@IntRange(from = -1, to = Integer.MAX_VALUE) int value) {
|
||||||
checkNotUsed();
|
checkNotUsed();
|
||||||
mBuilderFieldsSet |= 0x1000;
|
mBuilderFieldsSet |= 0x1000;
|
||||||
mWidth = value;
|
mWidth = value;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public @NonNull Builder setHeight(int value) {
|
/**
|
||||||
|
* Sets video height.
|
||||||
|
* @param value the video height. -1 indicates the value is unknown.
|
||||||
|
*/
|
||||||
|
public @NonNull Builder setHeight(@IntRange(from = -1, to = Integer.MAX_VALUE) int value) {
|
||||||
checkNotUsed();
|
checkNotUsed();
|
||||||
mBuilderFieldsSet |= 0x2000;
|
mBuilderFieldsSet |= 0x2000;
|
||||||
mHeight = value;
|
mHeight = value;
|
||||||
@@ -459,7 +552,7 @@ public final class TrackChangeEvent implements Parcelable {
|
|||||||
mSampleMimeType,
|
mSampleMimeType,
|
||||||
mCodecName,
|
mCodecName,
|
||||||
mBitrate,
|
mBitrate,
|
||||||
mTimeSincePlaybackCreatedMillis,
|
mTimeSinceCreatedMillis,
|
||||||
mType,
|
mType,
|
||||||
mLanguage,
|
mLanguage,
|
||||||
mLanguageRegion,
|
mLanguageRegion,
|
||||||
|
|||||||
@@ -121,8 +121,8 @@ public final class MediaMetricsManagerService extends SystemService {
|
|||||||
StatsEvent statsEvent = StatsEvent.newBuilder()
|
StatsEvent statsEvent = StatsEvent.newBuilder()
|
||||||
.setAtomId(321)
|
.setAtomId(321)
|
||||||
.writeString(sessionId)
|
.writeString(sessionId)
|
||||||
.writeInt(event.getType())
|
.writeInt(event.getNetworkType())
|
||||||
.writeLong(event.getTimeSincePlaybackCreatedMillis())
|
.writeLong(event.getTimeSinceCreatedMillis())
|
||||||
.usePooledBuffer()
|
.usePooledBuffer()
|
||||||
.build();
|
.build();
|
||||||
StatsLog.write(statsEvent);
|
StatsLog.write(statsEvent);
|
||||||
@@ -132,7 +132,7 @@ public final class MediaMetricsManagerService extends SystemService {
|
|||||||
public void reportTrackChangeEvent(
|
public void reportTrackChangeEvent(
|
||||||
String sessionId, TrackChangeEvent event, int userId) {
|
String sessionId, TrackChangeEvent event, int userId) {
|
||||||
StatsEvent statsEvent = StatsEvent.newBuilder()
|
StatsEvent statsEvent = StatsEvent.newBuilder()
|
||||||
.setAtomId(321)
|
.setAtomId(324)
|
||||||
.writeString(sessionId)
|
.writeString(sessionId)
|
||||||
.writeInt(event.getTrackState())
|
.writeInt(event.getTrackState())
|
||||||
.writeInt(event.getTrackChangeReason())
|
.writeInt(event.getTrackChangeReason())
|
||||||
@@ -140,7 +140,7 @@ public final class MediaMetricsManagerService extends SystemService {
|
|||||||
.writeString(event.getSampleMimeType())
|
.writeString(event.getSampleMimeType())
|
||||||
.writeString(event.getCodecName())
|
.writeString(event.getCodecName())
|
||||||
.writeInt(event.getBitrate())
|
.writeInt(event.getBitrate())
|
||||||
.writeLong(event.getTimeSincePlaybackCreatedMillis())
|
.writeLong(event.getTimeSinceCreatedMillis())
|
||||||
.writeInt(event.getTrackType())
|
.writeInt(event.getTrackType())
|
||||||
.writeString(event.getLanguage())
|
.writeString(event.getLanguage())
|
||||||
.writeString(event.getLanguageRegion())
|
.writeString(event.getLanguageRegion())
|
||||||
|
|||||||
Reference in New Issue
Block a user