Beispiel #1
0
        /**
         * @param queuePositionListener A {@link QueuePositionListener} for queue position changes.
         * @param localPlayerView The {@link PlayerView} for local playback.
         * @param castControlView The {@link PlayerControlView} to control remote playback.
         * @param context A {@link Context}.
         * @param castContext The {@link CastContext}.
         */
        public static PlayerManager CreatePlayerManager(IQueuePositionListener queuePositionListener, PlayerView localPlayerView, PlayerControlView castControlView, Context context, CastContext castContext)
        {
            PlayerManager playerManager = new PlayerManager(queuePositionListener, localPlayerView, castControlView, context, castContext);

            playerManager.Init();
            return(playerManager);
        }
Beispiel #2
0
        private PlayerManager(IQueuePositionListener queuePositionListener, PlayerView localPlayerView, PlayerControlView castControlView, Context context, CastContext castContext)
        {
            this.queuePositionListener = queuePositionListener;
            this.localPlayerView       = localPlayerView;
            this.castControlView       = castControlView;
            mediaQueue               = new List <DemoUtil.Sample>();
            currentItemIndex         = C.IndexUnset;
            concatenatingMediaSource = new ConcatenatingMediaSource();

            DefaultTrackSelector trackSelector    = new DefaultTrackSelector(BANDWIDTH_METER);
            IRenderersFactory    renderersFactory = new DefaultRenderersFactory(context);

            exoPlayer = ExoPlayerFactory.NewSimpleInstance(renderersFactory, trackSelector);
            exoPlayer.AddListener(this);
            localPlayerView.Player = exoPlayer;

            castPlayer = new CastPlayer(castContext);
            castPlayer.AddListener(this);
            castPlayer.SetSessionAvailabilityListener(this);
            castControlView.Player = castPlayer;
        }