Example #1
0
 /// <summary>
 /// Hides the loading spinner.
 /// </summary>
 public void HideLoading()
 {
     LoadingSpinnerView.Stop(() =>
     {
         LoadingSpinnerView.Visibility = ViewStates.Invisible;
     });
 }
Example #2
0
        /// <summary>
        /// Called when the player's state has changed.
        /// </summary>
        /// <param name="playWhenReady">if set to <c>true</c> [play when ready].</param>
        /// <param name="playbackState">State of the playback.</param>
        void IPlayerEventListener.OnPlayerStateChanged(bool playWhenReady, int playbackState)
        {
            //
            // If the video is ready, hide the spinner and start the video.
            //
            if (playbackState == Player.StateReady && AutoPlay)
            {
                AutoPlay = false;

                LoadingSpinnerView.Stop(() =>
                {
                    LoadingSpinnerView.Visibility = ViewStates.Invisible;

                    VideoPlayer.PlayWhenReady     = true;
                    PlayerView.ControllerAutoShow = true;
                });
            }

            //
            // Playback has ended naturally, close this video player.
            //
            if (playbackState == Player.StateEnded)
            {
                CrexActivity.MainActivity.PopTopFragment();
            }
        }
Example #3
0
        /// <summary>
        /// Shows the loading overlay.
        /// </summary>
        protected void ShowLoading()
        {
            OverlayView.Hidden       = false;
            OverlayView.FocusEnabled = true;
            LoadingSpinnerView.Start();

            SetNeedsFocusUpdate();
        }
Example #4
0
        /// <summary>
        /// Hides the loading overlay.
        /// </summary>
        protected void HideLoading()
        {
            LoadingSpinnerView.Stop(() =>
            {
                OverlayView.Hidden = true;
            });

            OverlayView.FocusEnabled = false;
            SetNeedsFocusUpdate();
        }
Example #5
0
        /// <summary>
        /// The view has loaded and is ready for final initialization.
        /// </summary>
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            OverlayView = new FocusView
            {
                Frame        = new CGRect(0, 0, 1920, 1080),
                Hidden       = true,
                FocusEnabled = false
            };
            View.AddSubview(OverlayView);

            LoadingSpinnerView = new LoadingSpinnerView(new CGRect(880, 460, 160, 160));
            OverlayView.AddSubview(LoadingSpinnerView);
        }
Example #6
0
        /// <summary>
        /// Plays the video contained in the URL at the given starting position.
        /// </summary>
        /// <param name="url">The URL.</param>
        /// <param name="position">The position.</param>
        private void PlayVideo(string url, long?position)
        {
            LoadingSpinnerView.Visibility = ViewStates.Visible;
            LoadingSpinnerView.Start();

            //
            // Prepare the standard HTTP information for the source.
            //
            var          mediaUri  = global::Android.Net.Uri.Parse(url);
            var          userAgent = Util.GetUserAgent(Activity, "Crex");
            var          defaultHttpDataSourceFactory = new DefaultHttpDataSourceFactory(userAgent);
            var          defaultDataSourceFactory     = new DefaultDataSourceFactory(Activity, null, defaultHttpDataSourceFactory);
            IMediaSource source;

            //
            // Determine if this is an HLS or MP4 stream.
            //
            if (mediaUri.Path.EndsWith(".m3u8", StringComparison.InvariantCultureIgnoreCase) || mediaUri.Path.EndsWith("/hsl", StringComparison.InvariantCultureIgnoreCase))
            {
                using (var factory = new HlsMediaSource.Factory(defaultDataSourceFactory))
                {
                    source = factory.CreateMediaSource(mediaUri);
                }
            }
            else
            {
                using (var factory = new ExtractorMediaSource.Factory(defaultDataSourceFactory))
                {
                    source = factory.CreateMediaSource(mediaUri);
                }
            }

            //
            // Create the player and get it ready for playback.
            //
            AutoPlay    = true;
            VideoPlayer = ExoPlayerFactory.NewSimpleInstance(Activity, new DefaultTrackSelector());
            VideoPlayer.AddListener(this);
            PlayerView.Player = VideoPlayer;

            if (position.HasValue)
            {
                VideoPlayer.SeekTo(position.Value);
            }

            VideoPlayer.Prepare(source, !position.HasValue, false);
        }
Example #7
0
 /// <summary>
 /// Shows the loading spinner.
 /// </summary>
 public void ShowLoading()
 {
     LoadingSpinnerView.Start();
     LoadingSpinnerView.Visibility = ViewStates.Visible;
     LoadingSpinnerView.RequestFocus();
 }