*** Original commit ***

Rollback of caf62842c4

*** Original commit ***

Rollback of c2cb22a056

*** Original commit ***

Rollback of 1521e50307

*** Original commit ***

PiperOrigin-RevId: 430905772
This commit is contained in:
ibaker 2022-02-25 10:56:59 +00:00 committed by Ian Baker
parent 5a304fdbd9
commit 9748695e03
2 changed files with 42 additions and 4 deletions

View File

@ -470,6 +470,7 @@ public interface ExoPlayer extends Player {
/* package */ long releaseTimeoutMs; /* package */ long releaseTimeoutMs;
/* package */ long detachSurfaceTimeoutMs; /* package */ long detachSurfaceTimeoutMs;
/* package */ boolean pauseAtEndOfMediaItems; /* package */ boolean pauseAtEndOfMediaItems;
/* package */ boolean usePlatformDiagnostics;
/* package */ boolean buildCalled; /* package */ boolean buildCalled;
/** /**
@ -510,6 +511,7 @@ public interface ExoPlayer extends Player {
* <li>{@code releaseTimeoutMs}: {@link #DEFAULT_RELEASE_TIMEOUT_MS} * <li>{@code releaseTimeoutMs}: {@link #DEFAULT_RELEASE_TIMEOUT_MS}
* <li>{@code detachSurfaceTimeoutMs}: {@link #DEFAULT_DETACH_SURFACE_TIMEOUT_MS} * <li>{@code detachSurfaceTimeoutMs}: {@link #DEFAULT_DETACH_SURFACE_TIMEOUT_MS}
* <li>{@code pauseAtEndOfMediaItems}: {@code false} * <li>{@code pauseAtEndOfMediaItems}: {@code false}
* <li>{@code usePlatformDiagnostics}: {@code true}
* <li>{@link Clock}: {@link Clock#DEFAULT} * <li>{@link Clock}: {@link Clock#DEFAULT}
* </ul> * </ul>
* *
@ -659,6 +661,7 @@ public interface ExoPlayer extends Player {
clock = Clock.DEFAULT; clock = Clock.DEFAULT;
releaseTimeoutMs = DEFAULT_RELEASE_TIMEOUT_MS; releaseTimeoutMs = DEFAULT_RELEASE_TIMEOUT_MS;
detachSurfaceTimeoutMs = DEFAULT_DETACH_SURFACE_TIMEOUT_MS; detachSurfaceTimeoutMs = DEFAULT_DETACH_SURFACE_TIMEOUT_MS;
usePlatformDiagnostics = true;
} }
/** /**
@ -1038,6 +1041,28 @@ public interface ExoPlayer extends Player {
return this; return this;
} }
/**
* Sets whether the player reports diagnostics data to the Android platform.
*
* <p>If enabled, the player will use the {@link android.media.metrics.MediaMetricsManager} to
* create a {@link android.media.metrics.PlaybackSession} and forward playback events and
* performance data to this session. This helps to provide system performance and debugging
* information for media playback on the device. This data may also be collected by Google <a
* href="https://support.google.com/accounts/answer/6078260">if sharing usage and diagnostics
* data is enabled</a> by the user of the device.
*
* @param usePlatformDiagnostics Whether the player reports diagnostics data to the Android
* platform.
* @return This builder.
* @throws IllegalStateException If {@link #build()} has already been called.
*/
@UnstableApi
public Builder setUsePlatformDiagnostics(boolean usePlatformDiagnostics) {
checkState(!buildCalled);
this.usePlatformDiagnostics = usePlatformDiagnostics;
return this;
}
/** /**
* Sets the {@link Clock} that will be used by the player. Should only be set for testing * Sets the {@link Clock} that will be used by the player. Should only be set for testing
* purposes. * purposes.

View File

@ -86,6 +86,7 @@ import androidx.media3.exoplayer.PlayerMessage.Target;
import androidx.media3.exoplayer.Renderer.MessageType; import androidx.media3.exoplayer.Renderer.MessageType;
import androidx.media3.exoplayer.analytics.AnalyticsCollector; import androidx.media3.exoplayer.analytics.AnalyticsCollector;
import androidx.media3.exoplayer.analytics.AnalyticsListener; import androidx.media3.exoplayer.analytics.AnalyticsListener;
import androidx.media3.exoplayer.analytics.MediaMetricsListener;
import androidx.media3.exoplayer.analytics.PlayerId; import androidx.media3.exoplayer.analytics.PlayerId;
import androidx.media3.exoplayer.audio.AudioRendererEventListener; import androidx.media3.exoplayer.audio.AudioRendererEventListener;
import androidx.media3.exoplayer.metadata.MetadataOutput; import androidx.media3.exoplayer.metadata.MetadataOutput;
@ -317,7 +318,11 @@ import java.util.concurrent.TimeoutException;
playbackInfoUpdateHandler.post(() -> handlePlaybackInfo(playbackInfoUpdate)); playbackInfoUpdateHandler.post(() -> handlePlaybackInfo(playbackInfoUpdate));
playbackInfo = PlaybackInfo.createDummy(emptyTrackSelectorResult); playbackInfo = PlaybackInfo.createDummy(emptyTrackSelectorResult);
analyticsCollector.setPlayer(this.wrappingPlayer, applicationLooper); analyticsCollector.setPlayer(this.wrappingPlayer, applicationLooper);
PlayerId playerId = Util.SDK_INT < 31 ? new PlayerId() : Api31.createPlayerId(); PlayerId playerId =
Util.SDK_INT < 31
? new PlayerId()
: Api31.registerMediaMetricsListener(
applicationContext, /* player= */ this, builder.usePlatformDiagnostics);
internalPlayer = internalPlayer =
new ExoPlayerImplInternal( new ExoPlayerImplInternal(
renderers, renderers,
@ -3074,9 +3079,17 @@ import java.util.concurrent.TimeoutException;
private Api31() {} private Api31() {}
@DoNotInline @DoNotInline
public static PlayerId createPlayerId() { public static PlayerId registerMediaMetricsListener(
// TODO: Create a MediaMetricsListener and obtain LogSessionId from it. Context context, ExoPlayerImpl player, boolean usePlatformDiagnostics) {
@Nullable MediaMetricsListener listener = MediaMetricsListener.create(context);
if (listener == null) {
Log.w(TAG, "MediaMetricsService unavailable.");
return new PlayerId(LogSessionId.LOG_SESSION_ID_NONE); return new PlayerId(LogSessionId.LOG_SESSION_ID_NONE);
} }
if (usePlatformDiagnostics) {
player.addAnalyticsListener(listener);
}
return new PlayerId(listener.getLogSessionId());
}
} }
} }