Commit 57159603 by andrewlewis Committed by Oliver Woodman

Add Context to SimpleExoPlayer factory methods

This is needed for implementing (optional) support for audio focus handling in a
later change.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=206899837
parent 429bf4d0
...@@ -115,7 +115,7 @@ import java.util.ArrayList; ...@@ -115,7 +115,7 @@ import java.util.ArrayList;
DefaultTrackSelector trackSelector = new DefaultTrackSelector(); DefaultTrackSelector trackSelector = new DefaultTrackSelector();
RenderersFactory renderersFactory = new DefaultRenderersFactory(context); RenderersFactory renderersFactory = new DefaultRenderersFactory(context);
exoPlayer = ExoPlayerFactory.newSimpleInstance(renderersFactory, trackSelector); exoPlayer = ExoPlayerFactory.newSimpleInstance(context, renderersFactory, trackSelector);
exoPlayer.addListener(this); exoPlayer.addListener(this);
localPlayerView.setPlayer(exoPlayer); localPlayerView.setPlayer(exoPlayer);
......
...@@ -424,7 +424,8 @@ public class PlayerActivity extends Activity ...@@ -424,7 +424,8 @@ public class PlayerActivity extends Activity
lastSeenTrackGroupArray = null; lastSeenTrackGroupArray = null;
player = player =
ExoPlayerFactory.newSimpleInstance(renderersFactory, trackSelector, drmSessionManager); ExoPlayerFactory.newSimpleInstance(
/* context= */ this, renderersFactory, trackSelector, drmSessionManager);
player.addListener(new PlayerEventListener()); player.addListener(new PlayerEventListener());
player.setPlayWhenReady(startAutoPlay); player.setPlayWhenReady(startAutoPlay);
player.addAnalyticsListener(new EventLogger(trackSelector)); player.addAnalyticsListener(new EventLogger(trackSelector));
......
...@@ -16,8 +16,10 @@ ...@@ -16,8 +16,10 @@
package com.google.android.exoplayer2; package com.google.android.exoplayer2;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.Rect; import android.graphics.Rect;
import android.graphics.SurfaceTexture; import android.graphics.SurfaceTexture;
import android.media.AudioManager;
import android.media.MediaCodec; import android.media.MediaCodec;
import android.media.PlaybackParams; import android.media.PlaybackParams;
import android.os.Handler; import android.os.Handler;
...@@ -83,6 +85,9 @@ public class SimpleExoPlayer ...@@ -83,6 +85,9 @@ public class SimpleExoPlayer
private final BandwidthMeter bandwidthMeter; private final BandwidthMeter bandwidthMeter;
private final AnalyticsCollector analyticsCollector; private final AnalyticsCollector analyticsCollector;
@SuppressWarnings({"unused", "FieldCanBeLocal"})
private final @Nullable AudioManager audioManager;
private Format videoFormat; private Format videoFormat;
private Format audioFormat; private Format audioFormat;
...@@ -110,8 +115,41 @@ public class SimpleExoPlayer ...@@ -110,8 +115,41 @@ public class SimpleExoPlayer
* will not be used for DRM protected playbacks. * will not be used for DRM protected playbacks.
* @param looper The {@link Looper} which must be used for all calls to the player and which is * @param looper The {@link Looper} which must be used for all calls to the player and which is
* used to call listeners on. * used to call listeners on.
* @deprecated Use {@link #SimpleExoPlayer(Context, RenderersFactory, TrackSelector, LoadControl,
* BandwidthMeter, DrmSessionManager, Looper)}.
*/
@Deprecated
protected SimpleExoPlayer(
RenderersFactory renderersFactory,
TrackSelector trackSelector,
LoadControl loadControl,
BandwidthMeter bandwidthMeter,
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
Looper looper) {
this(
/* context= */ null,
renderersFactory,
trackSelector,
loadControl,
drmSessionManager,
bandwidthMeter,
new AnalyticsCollector.Factory(),
looper);
}
/**
* @param context A {@link Context}.
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
* @param trackSelector The {@link TrackSelector} that will be used by the instance.
* @param loadControl The {@link LoadControl} that will be used by the instance.
* @param bandwidthMeter The {@link BandwidthMeter} that will be used by the instance.
* @param drmSessionManager An optional {@link DrmSessionManager}. May be null if the instance
* will not be used for DRM protected playbacks.
* @param looper The {@link Looper} which must be used for all calls to the player and which is
* used to call listeners on.
*/ */
protected SimpleExoPlayer( protected SimpleExoPlayer(
Context context,
RenderersFactory renderersFactory, RenderersFactory renderersFactory,
TrackSelector trackSelector, TrackSelector trackSelector,
LoadControl loadControl, LoadControl loadControl,
...@@ -119,6 +157,7 @@ public class SimpleExoPlayer ...@@ -119,6 +157,7 @@ public class SimpleExoPlayer
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager, @Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
Looper looper) { Looper looper) {
this( this(
context,
renderersFactory, renderersFactory,
trackSelector, trackSelector,
loadControl, loadControl,
...@@ -129,6 +168,7 @@ public class SimpleExoPlayer ...@@ -129,6 +168,7 @@ public class SimpleExoPlayer
} }
/** /**
* @param context A {@link Context}.
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance. * @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
* @param trackSelector The {@link TrackSelector} that will be used by the instance. * @param trackSelector The {@link TrackSelector} that will be used by the instance.
* @param loadControl The {@link LoadControl} that will be used by the instance. * @param loadControl The {@link LoadControl} that will be used by the instance.
...@@ -141,6 +181,7 @@ public class SimpleExoPlayer ...@@ -141,6 +181,7 @@ public class SimpleExoPlayer
* used to call listeners on. * used to call listeners on.
*/ */
protected SimpleExoPlayer( protected SimpleExoPlayer(
Context context,
RenderersFactory renderersFactory, RenderersFactory renderersFactory,
TrackSelector trackSelector, TrackSelector trackSelector,
LoadControl loadControl, LoadControl loadControl,
...@@ -149,6 +190,7 @@ public class SimpleExoPlayer ...@@ -149,6 +190,7 @@ public class SimpleExoPlayer
AnalyticsCollector.Factory analyticsCollectorFactory, AnalyticsCollector.Factory analyticsCollectorFactory,
Looper looper) { Looper looper) {
this( this(
context,
renderersFactory, renderersFactory,
trackSelector, trackSelector,
loadControl, loadControl,
...@@ -160,6 +202,7 @@ public class SimpleExoPlayer ...@@ -160,6 +202,7 @@ public class SimpleExoPlayer
} }
/** /**
* @param context A {@link Context}.
* @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance. * @param renderersFactory A factory for creating {@link Renderer}s to be used by the instance.
* @param trackSelector The {@link TrackSelector} that will be used by the instance. * @param trackSelector The {@link TrackSelector} that will be used by the instance.
* @param loadControl The {@link LoadControl} that will be used by the instance. * @param loadControl The {@link LoadControl} that will be used by the instance.
...@@ -174,6 +217,7 @@ public class SimpleExoPlayer ...@@ -174,6 +217,7 @@ public class SimpleExoPlayer
* used to call listeners on. * used to call listeners on.
*/ */
protected SimpleExoPlayer( protected SimpleExoPlayer(
Context context,
RenderersFactory renderersFactory, RenderersFactory renderersFactory,
TrackSelector trackSelector, TrackSelector trackSelector,
LoadControl loadControl, LoadControl loadControl,
...@@ -221,6 +265,13 @@ public class SimpleExoPlayer ...@@ -221,6 +265,13 @@ public class SimpleExoPlayer
if (drmSessionManager instanceof DefaultDrmSessionManager) { if (drmSessionManager instanceof DefaultDrmSessionManager) {
((DefaultDrmSessionManager) drmSessionManager).addListener(eventHandler, analyticsCollector); ((DefaultDrmSessionManager) drmSessionManager).addListener(eventHandler, analyticsCollector);
} }
// TODO: Remove null check once the deprecated factory method and constructor that don't take
// Contexts have been removed.
audioManager =
context == null
? null
: (AudioManager)
context.getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
} }
@Override @Override
......
...@@ -711,7 +711,7 @@ public final class AnalyticsCollectorTest { ...@@ -711,7 +711,7 @@ public final class AnalyticsCollectorTest {
.setRenderersFactory(renderersFactory) .setRenderersFactory(renderersFactory)
.setAnalyticsListener(listener) .setAnalyticsListener(listener)
.setActionSchedule(actionSchedule) .setActionSchedule(actionSchedule)
.build() .build(RuntimeEnvironment.application)
.start() .start()
.blockUntilActionScheduleFinished(TIMEOUT_MS) .blockUntilActionScheduleFinished(TIMEOUT_MS)
.blockUntilEnded(TIMEOUT_MS); .blockUntilEnded(TIMEOUT_MS);
......
...@@ -301,7 +301,7 @@ public final class DashTestRunner { ...@@ -301,7 +301,7 @@ public final class DashTestRunner {
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) { DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
SimpleExoPlayer player = SimpleExoPlayer player =
ExoPlayerFactory.newSimpleInstance( ExoPlayerFactory.newSimpleInstance(
new DebugRenderersFactory(host), trackSelector, drmSessionManager); host, new DebugRenderersFactory(host), trackSelector, drmSessionManager);
player.setVideoSurface(surface); player.setVideoSurface(surface);
return player; return player;
} }
......
...@@ -370,7 +370,8 @@ public abstract class ExoHostedTest ...@@ -370,7 +370,8 @@ public abstract class ExoHostedTest
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) { DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
RenderersFactory renderersFactory = new DefaultRenderersFactory(host, drmSessionManager, RenderersFactory renderersFactory = new DefaultRenderersFactory(host, drmSessionManager,
DefaultRenderersFactory.EXTENSION_RENDERER_MODE_OFF, 0); DefaultRenderersFactory.EXTENSION_RENDERER_MODE_OFF, 0);
SimpleExoPlayer player = ExoPlayerFactory.newSimpleInstance(renderersFactory, trackSelector); SimpleExoPlayer player =
ExoPlayerFactory.newSimpleInstance(host, renderersFactory, trackSelector);
player.setVideoSurface(surface); player.setVideoSurface(surface);
return player; return player;
} }
......
...@@ -17,6 +17,7 @@ package com.google.android.exoplayer2.testutil; ...@@ -17,6 +17,7 @@ package com.google.android.exoplayer2.testutil;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
import android.os.HandlerThread; import android.os.HandlerThread;
import android.os.Looper; import android.os.Looper;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
...@@ -291,9 +292,10 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc ...@@ -291,9 +292,10 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
/** /**
* Builds an {@link ExoPlayerTestRunner} using the provided values or their defaults. * Builds an {@link ExoPlayerTestRunner} using the provided values or their defaults.
* *
* @param context The context.
* @return The built {@link ExoPlayerTestRunner}. * @return The built {@link ExoPlayerTestRunner}.
*/ */
public ExoPlayerTestRunner build() { public ExoPlayerTestRunner build(Context context) {
if (supportedFormats == null) { if (supportedFormats == null) {
supportedFormats = new Format[] {VIDEO_FORMAT}; supportedFormats = new Format[] {VIDEO_FORMAT};
} }
...@@ -334,6 +336,7 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc ...@@ -334,6 +336,7 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
expectedPlayerEndedCount = 1; expectedPlayerEndedCount = 1;
} }
return new ExoPlayerTestRunner( return new ExoPlayerTestRunner(
context,
clock, clock,
mediaSource, mediaSource,
renderersFactory, renderersFactory,
...@@ -348,6 +351,7 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc ...@@ -348,6 +351,7 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
} }
} }
private final Context context;
private final Clock clock; private final Clock clock;
private final MediaSource mediaSource; private final MediaSource mediaSource;
private final RenderersFactory renderersFactory; private final RenderersFactory renderersFactory;
...@@ -375,6 +379,7 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc ...@@ -375,6 +379,7 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
private boolean playerWasPrepared; private boolean playerWasPrepared;
private ExoPlayerTestRunner( private ExoPlayerTestRunner(
Context context,
Clock clock, Clock clock,
MediaSource mediaSource, MediaSource mediaSource,
RenderersFactory renderersFactory, RenderersFactory renderersFactory,
...@@ -386,6 +391,7 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc ...@@ -386,6 +391,7 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
@Nullable AudioRendererEventListener audioRendererEventListener, @Nullable AudioRendererEventListener audioRendererEventListener,
@Nullable AnalyticsListener analyticsListener, @Nullable AnalyticsListener analyticsListener,
int expectedPlayerEndedCount) { int expectedPlayerEndedCount) {
this.context = context;
this.clock = clock; this.clock = clock;
this.mediaSource = mediaSource; this.mediaSource = mediaSource;
this.renderersFactory = renderersFactory; this.renderersFactory = renderersFactory;
...@@ -423,7 +429,9 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc ...@@ -423,7 +429,9 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
@Override @Override
public void run() { public void run() {
try { try {
player = new TestSimpleExoPlayer(renderersFactory, trackSelector, loadControl, clock); player =
new TestSimpleExoPlayer(
context, renderersFactory, trackSelector, loadControl, clock);
player.addListener(ExoPlayerTestRunner.this); player.addListener(ExoPlayerTestRunner.this);
if (eventListener != null) { if (eventListener != null) {
player.addListener(eventListener); player.addListener(eventListener);
...@@ -652,11 +660,13 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc ...@@ -652,11 +660,13 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
private static final class TestSimpleExoPlayer extends SimpleExoPlayer { private static final class TestSimpleExoPlayer extends SimpleExoPlayer {
public TestSimpleExoPlayer( public TestSimpleExoPlayer(
Context context,
RenderersFactory renderersFactory, RenderersFactory renderersFactory,
TrackSelector trackSelector, TrackSelector trackSelector,
LoadControl loadControl, LoadControl loadControl,
Clock clock) { Clock clock) {
super( super(
context,
renderersFactory, renderersFactory,
trackSelector, trackSelector,
loadControl, loadControl,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment