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;
DefaultTrackSelector trackSelector = new DefaultTrackSelector();
RenderersFactory renderersFactory = new DefaultRenderersFactory(context);
exoPlayer = ExoPlayerFactory.newSimpleInstance(renderersFactory, trackSelector);
exoPlayer = ExoPlayerFactory.newSimpleInstance(context, renderersFactory, trackSelector);
exoPlayer.addListener(this);
localPlayerView.setPlayer(exoPlayer);
......
......@@ -424,7 +424,8 @@ public class PlayerActivity extends Activity
lastSeenTrackGroupArray = null;
player =
ExoPlayerFactory.newSimpleInstance(renderersFactory, trackSelector, drmSessionManager);
ExoPlayerFactory.newSimpleInstance(
/* context= */ this, renderersFactory, trackSelector, drmSessionManager);
player.addListener(new PlayerEventListener());
player.setPlayWhenReady(startAutoPlay);
player.addAnalyticsListener(new EventLogger(trackSelector));
......
......@@ -16,8 +16,10 @@
package com.google.android.exoplayer2;
import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.Rect;
import android.graphics.SurfaceTexture;
import android.media.AudioManager;
import android.media.MediaCodec;
import android.media.PlaybackParams;
import android.os.Handler;
......@@ -83,6 +85,9 @@ public class SimpleExoPlayer
private final BandwidthMeter bandwidthMeter;
private final AnalyticsCollector analyticsCollector;
@SuppressWarnings({"unused", "FieldCanBeLocal"})
private final @Nullable AudioManager audioManager;
private Format videoFormat;
private Format audioFormat;
......@@ -110,8 +115,41 @@ public class SimpleExoPlayer
* 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.
* @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(
Context context,
RenderersFactory renderersFactory,
TrackSelector trackSelector,
LoadControl loadControl,
......@@ -119,6 +157,7 @@ public class SimpleExoPlayer
@Nullable DrmSessionManager<FrameworkMediaCrypto> drmSessionManager,
Looper looper) {
this(
context,
renderersFactory,
trackSelector,
loadControl,
......@@ -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 trackSelector The {@link TrackSelector} 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
* used to call listeners on.
*/
protected SimpleExoPlayer(
Context context,
RenderersFactory renderersFactory,
TrackSelector trackSelector,
LoadControl loadControl,
......@@ -149,6 +190,7 @@ public class SimpleExoPlayer
AnalyticsCollector.Factory analyticsCollectorFactory,
Looper looper) {
this(
context,
renderersFactory,
trackSelector,
loadControl,
......@@ -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 trackSelector The {@link TrackSelector} 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
* used to call listeners on.
*/
protected SimpleExoPlayer(
Context context,
RenderersFactory renderersFactory,
TrackSelector trackSelector,
LoadControl loadControl,
......@@ -221,6 +265,13 @@ public class SimpleExoPlayer
if (drmSessionManager instanceof DefaultDrmSessionManager) {
((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
......
......@@ -711,7 +711,7 @@ public final class AnalyticsCollectorTest {
.setRenderersFactory(renderersFactory)
.setAnalyticsListener(listener)
.setActionSchedule(actionSchedule)
.build()
.build(RuntimeEnvironment.application)
.start()
.blockUntilActionScheduleFinished(TIMEOUT_MS)
.blockUntilEnded(TIMEOUT_MS);
......
......@@ -301,7 +301,7 @@ public final class DashTestRunner {
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
SimpleExoPlayer player =
ExoPlayerFactory.newSimpleInstance(
new DebugRenderersFactory(host), trackSelector, drmSessionManager);
host, new DebugRenderersFactory(host), trackSelector, drmSessionManager);
player.setVideoSurface(surface);
return player;
}
......
......@@ -370,7 +370,8 @@ public abstract class ExoHostedTest
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager) {
RenderersFactory renderersFactory = new DefaultRenderersFactory(host, drmSessionManager,
DefaultRenderersFactory.EXTENSION_RENDERER_MODE_OFF, 0);
SimpleExoPlayer player = ExoPlayerFactory.newSimpleInstance(renderersFactory, trackSelector);
SimpleExoPlayer player =
ExoPlayerFactory.newSimpleInstance(host, renderersFactory, trackSelector);
player.setVideoSurface(surface);
return player;
}
......
......@@ -17,6 +17,7 @@ package com.google.android.exoplayer2.testutil;
import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
import android.os.HandlerThread;
import android.os.Looper;
import android.support.annotation.Nullable;
......@@ -291,9 +292,10 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
/**
* Builds an {@link ExoPlayerTestRunner} using the provided values or their defaults.
*
* @param context The context.
* @return The built {@link ExoPlayerTestRunner}.
*/
public ExoPlayerTestRunner build() {
public ExoPlayerTestRunner build(Context context) {
if (supportedFormats == null) {
supportedFormats = new Format[] {VIDEO_FORMAT};
}
......@@ -334,6 +336,7 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
expectedPlayerEndedCount = 1;
}
return new ExoPlayerTestRunner(
context,
clock,
mediaSource,
renderersFactory,
......@@ -348,6 +351,7 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
}
}
private final Context context;
private final Clock clock;
private final MediaSource mediaSource;
private final RenderersFactory renderersFactory;
......@@ -375,6 +379,7 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
private boolean playerWasPrepared;
private ExoPlayerTestRunner(
Context context,
Clock clock,
MediaSource mediaSource,
RenderersFactory renderersFactory,
......@@ -386,6 +391,7 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
@Nullable AudioRendererEventListener audioRendererEventListener,
@Nullable AnalyticsListener analyticsListener,
int expectedPlayerEndedCount) {
this.context = context;
this.clock = clock;
this.mediaSource = mediaSource;
this.renderersFactory = renderersFactory;
......@@ -423,7 +429,9 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
@Override
public void run() {
try {
player = new TestSimpleExoPlayer(renderersFactory, trackSelector, loadControl, clock);
player =
new TestSimpleExoPlayer(
context, renderersFactory, trackSelector, loadControl, clock);
player.addListener(ExoPlayerTestRunner.this);
if (eventListener != null) {
player.addListener(eventListener);
......@@ -652,11 +660,13 @@ public final class ExoPlayerTestRunner implements Player.EventListener, ActionSc
private static final class TestSimpleExoPlayer extends SimpleExoPlayer {
public TestSimpleExoPlayer(
Context context,
RenderersFactory renderersFactory,
TrackSelector trackSelector,
LoadControl loadControl,
Clock clock) {
super(
context,
renderersFactory,
trackSelector,
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