Example #1
0
 private async void PlaybackSession_PositionChanged(MediaPlaybackSession sender, object args)
 {
     await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
     {
         MediaPlayerViewModel.UpdatePosition();
     });
 }
Example #2
0
        public void LoadAndPlayFile_FolderHasNonAsciiCharacter_Plays()
        {
            var source = MediaFileInfoTests.GetShortTestAudioFile();

            using (var folder = new TemporaryFolder("Ń„Ń„SayMoreMediaModelTest"))
            {
                var pathname = Path.Combine(folder.Path, "normal.wav");

                if (File.Exists(pathname))
                {
                    File.Delete(pathname);
                }
                File.Move(source, pathname);
                _model.LoadFile(pathname);
                _model.SetVolume(0.01f);
                var logger = new DebugLogger();
                ReflectionHelper.SetProperty(_model, "DebugOutput", logger);
                _model.PlaybackEnded += delegate
                {
                    _model = null;
                    File.Delete(pathname);
                };
                _model.Play();
                while (_model != null)
                {
                    Thread.Sleep(10);
                }
                Assert.IsTrue(logger.GetText().Contains("Starting playback..."));
            }
        }
Example #3
0
        public void MakeTimeString_WithSSms_VerifyCorrect()
        {
            var ts      = new TimeSpan(0, 0, 0, 47, 368);
            var seconds = float.Parse(ts.TotalSeconds.ToString());

            Assert.AreEqual("47.4", MediaPlayerViewModel.MakeTimeString(seconds));
        }
Example #4
0
        public void MakeTimeString_WithHHMMSSms_VerifyCorrect()
        {
            var ts      = new TimeSpan(0, 2, 32, 54, 430);
            var seconds = float.Parse(ts.TotalSeconds.ToString());

            Assert.AreEqual("02:32:54.4", MediaPlayerViewModel.MakeTimeString(seconds));
        }
Example #5
0
        public void MakeTimeString_WithMMSSms_VerifyCorrect()
        {
            var ts      = new TimeSpan(0, 0, 16, 23, 560);
            var seconds = float.Parse(ts.TotalSeconds.ToString());

            Assert.AreEqual("16:23.6", MediaPlayerViewModel.MakeTimeString(seconds));
        }
        /// ------------------------------------------------------------------------------------
        public TextAnnotationEditorGrid(Font transcriptionFont, Font translationFont)
        {
            Anchor      = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom;
            Margin      = new Padding(0);
            VirtualMode = true;
            ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
            AutoSizeRowsMode            = DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders;
            AllowUserToResizeRows       = false;
            RowHeadersVisible           = false;
            EditMode                            = DataGridViewEditMode.EditOnEnter;
            ClipboardCopyMode                   = DataGridViewClipboardCopyMode.Disable;
            FullRowFocusRectangleColor          = DefaultCellStyle.SelectionBackColor;
            DefaultCellStyle.SelectionForeColor = DefaultCellStyle.ForeColor;
            DefaultCellStyle.SelectionBackColor =
                ColorHelper.CalculateColor(Color.White, DefaultCellStyle.SelectionBackColor, 140);

            RowTemplate.Height        = 25;
            RowTemplate.MinimumHeight = 24;

            PlayerViewModel = new MediaPlayerViewModel();

            PlayerViewModel.SetVolume(100);
            PlayerViewModel.SetSpeed(Settings.Default.AnnotationEditorPlaybackSpeedIndex);

            SetColumnFonts(transcriptionFont, translationFont);
        }
Example #7
0
        public void TestMediaPlayerViewModelCreation()
        {
            // This test is trivial. Add your own tests for the logic you add to the ViewModel.
            var vm = new MediaPlayerViewModel();

            Assert.NotNull(vm);
        }
        protected override void SetValueImpl(object target, object value)
        {
            _droppedFrameRequestSubscription?.Dispose();
            _droppedFrameRequestSubscription = null;

            _playRequestSubscription?.Dispose();
            _playRequestSubscription = null;

            _stopRequestSubscription?.Dispose();
            _stopRequestSubscription = null;

            _progressTimer?.Dispose();
            _progressTimer = null;

            MediaPlayerViewModel = value as MediaPlayerViewModel;
            if (MediaPlayerViewModel == null)
            {
                return;
            }

            if (MediaPlayerViewModel.CanReportProgress)
            {
                _progressTimer = new Timer(OnProgressTimer, null, ProgressTimerStep, Timeout.Infinite);
            }

            _stopRequestSubscription         = MediaPlayerViewModel.WeakSubscribe(nameof(MediaPlayerViewModel.StopRequest), StopRequestHandler);
            _playRequestSubscription         = MediaPlayerViewModel.WeakSubscribe <MediaPlayerViewModel, PlaybackModel>(nameof(MediaPlayerViewModel.PlayRequest), PlayRequestHandler);
            _droppedFrameRequestSubscription = MediaPlayerViewModel.WeakSubscribe(nameof(MediaPlayerViewModel.DroppedFrameRequest), DroppedFrameRequestHandler);
        }
Example #9
0
 private void MediaPlayer_MediaOpened(MediaPlayer sender, object args)
 {
     App.RunOnUIThread(() =>
     {
         MediaPlayerViewModel.LoadMediaPlayer(sender);
         BindingViewModel();
     });
 }
Example #10
0
 private async void MediaPlayer_MediaOpened(FrameMediaPlayer sender, object args)
 {
     await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
     {
         BindingViewModel();
         MediaPlayerViewModel.LoadMediaPlayer(sender);
         System.Diagnostics.Debug.WriteLine("Media Opened");
     });
 }
Example #11
0
        /// ------------------------------------------------------------------------------------
        protected virtual void UpdateStatusLabelsDisplay()
        {
            _labelSegmentXofY.Visible   = false;
            _labelSegmentNumber.Visible = true;
            _labelSegmentNumber.Text    = string.Format(_segmentNumberFormat, _viewModel.GetSegmentCount());

            _labelTimeDisplay.Text = MediaPlayerViewModel.GetTimeDisplay(
                (float)GetCurrentTimeForTimeDisplay().TotalSeconds,
                (float)_viewModel.OrigWaveStream.TotalTime.TotalSeconds);
        }
 /// <summary>
 ///		Inicializa las librerĂ­as
 /// </summary>
 public override void InitLibraries(IHostPluginsController hostPluginsController)
 {
     MainInstance          = this;
     HostPluginsController = hostPluginsController;
     Name             = "MediaPlayer";
     ViewModelManager = new MediaPlayerViewModel("MediaPlayer", HostPluginsController.HostViewModelController,
                                                 HostPluginsController.ControllerWindow, hostPluginsController.DialogsController,
                                                 ViewsController, GetRouteIcons());
     ViewModelManager.InitModule();
 }
Example #13
0
 /// ------------------------------------------------------------------------------------
 private void HandleCursorTimeChanged(Media.Audio.WaveControlBasic ctrl, TimeSpan cursorTime)
 {
     if (InvokeRequired)
     {
         Invoke(new Action(() => HandleCursorTimeChanged(ctrl, cursorTime)));
         return;
     }
     _labelCursorTime.Text = MediaPlayerViewModel.GetTimeDisplay(
         (float)cursorTime.TotalSeconds, (float)_oralAnnotationWaveViewer.AudioLength.TotalSeconds);
 }
        /// ------------------------------------------------------------------------------------
        public NewSessionsFromFilesDlg(NewSessionsFromFileDlgViewModel viewModel)
        {
            Logger.WriteEvent("NewSessionsFromFilesDlg constructor");

            InitializeComponent();

            var selectedCol = new DataGridViewCheckBoxColumn();

            selectedCol.AutoSizeMode     = DataGridViewAutoSizeColumnMode.AllCells;
            selectedCol.DataPropertyName = "Selected";
            selectedCol.HeaderText       = string.Empty;
            selectedCol.Name             = "selectedCol";
            selectedCol.Resizable        = DataGridViewTriState.False;
            selectedCol.SortMode         = DataGridViewColumnSortMode.Automatic;
            _gridFiles.Grid.Columns.Insert(0, selectedCol);
            _chkBoxColHdrHandler = new CheckBoxColumnHeaderHandler(selectedCol);

            _gridFiles.InitializeGrid("NewSessionsFromFilesDlg");
            _gridFiles.AfterComponentSelectionChanged = HandleComponentFileSelected;

            Controls.Add(_panelProgress);

            _labelIncomingFiles.Font = Program.DialogFont;
            _labelInstructions.Font  = Program.DialogFont;
            _linkFindFiles.Font      = Program.DialogFont;
            _labelSourceFolder.Font  = new Font(Program.DialogFont, FontStyle.Bold);
            _panelProgress.Visible   = false;

            if (Settings.Default.NewSessionsFromFilesDlg == null)
            {
                StartPosition = FormStartPosition.CenterScreen;
                Settings.Default.NewSessionsFromFilesDlg = FormSettings.Create(this);
            }

            _folderMissingMsgCtrl = new NewSessionsFromFilesDlgFolderNotFoundMsg();
            _gridFiles.Controls.Add(_folderMissingMsgCtrl);
            _folderMissingMsgCtrl.BringToFront();

            _mediaPlayerPanel.BorderStyle = BorderStyle.None;

            _mediaPlayerViewModel = new MediaPlayerViewModel();

            _mediaPlayerViewModel.SetVolume(Settings.Default.MediaPlayerVolume);
            _mediaPlayer      = new MediaPlayer(_mediaPlayerViewModel);
            _mediaPlayer.Dock = DockStyle.Fill;
            _mediaPlayerPanel.Controls.Add(_mediaPlayer);

            DialogResult                     = DialogResult.Cancel;
            _viewModel                       = viewModel;
            _viewModel.FilesChanged         += UpdateDisplay;
            _viewModel.FileLoadingStarted   += InitializeProgressIndicatorForFileLoading;
            _viewModel.FilesLoaded          += UpdateFileLoadingProgress;
            _viewModel.FileLoadingCompleted += FileLoadingProgressComplete;
            _viewModel.Initialize(this);
        }
Example #15
0
 public MediaMessengerController(MediaPlayerViewModel mainViewModel)
 {
     // Asigna el controlador principal
     MainViewModel = mainViewModel;
     // Asinga los manejadores de events
     MainViewModel.HostController.Messenger.Sent += (sender, evntArgs) => {
         if (evntArgs != null && evntArgs.MessageSent is MessagePlayMedia message)
         {
             TreatMessagePlayMedia(message);
         }
     };
 }
Example #16
0
 /// ------------------------------------------------------------------------------------
 protected virtual void OnPlayingback(WaveControlBasic ctrl, TimeSpan current, TimeSpan total)
 {
     if (InvokeRequired)
     {
         Invoke(new Action(() => OnPlayingback(ctrl, current, total)));
     }
     else
     {
         _labelTimeDisplay.Text = MediaPlayerViewModel.GetTimeDisplay(
             (float)current.TotalSeconds, (float)total.TotalSeconds);
     }
 }
        public void setNowPlayingCallback(MediaPlayerViewModel vm)
        {
            NSNotificationCenter.DefaultCenter.AddObserver(
                MPMusicPlayerController.NowPlayingItemDidChangeNotification, (notification) => Callback(notification, vm));

            NSNotificationCenter.DefaultCenter.AddObserver(
                MPMusicPlayerController.PlaybackStateDidChangeNotification, (notification) => Callback(notification, vm));
            NSNotificationCenter.DefaultCenter.AddObserver(
                MPMusicPlayerController.VolumeDidChangeNotification, (notification) => Callback(notification, vm));

            //MPMusicPlayerController.SystemMusicPlayer.BeginGeneratingPlaybackNotifications ();
        }
Example #18
0
        /// ------------------------------------------------------------------------------------
        public AudioVideoPlayer(ComponentFile file, string imageKey) : base(file, null, imageKey)
        {
            Logger.WriteEvent("AudioVideoPlayer constructor. file = {0}; imageKey = {1}", file, imageKey);
            InitializeComponent();
            Name = "AudioVideoPlayer";

            _mediaPlayerViewModel = new MediaPlayerViewModel();

            _mediaPlayer      = new MediaPlayer(_mediaPlayerViewModel);
            _mediaPlayer.Dock = DockStyle.Fill;
            Controls.Add(_mediaPlayer);

            FinishInitializing(file);
        }
Example #19
0
        /// ------------------------------------------------------------------------------------
        public SegmenterDlgBase(SegmenterDlgBaseViewModel viewModel) : this()
        {
            _viewModel = viewModel;
            _viewModel.UpdateDisplayProvider = UpdateDisplay;
            _viewModel.OralAnnotationWaveAreaRefreshAction = () => _waveControl.InvalidateBottomReservedArea();

            if (!_moreReliableDesignMode && FormSettings == null)
            {
                StartPosition = FormStartPosition.CenterScreen;
                FormSettings  = FormSettings.Create(this);
            }

            _labelTimeDisplay.Text = MediaPlayerViewModel.GetTimeDisplay(0f,
                                                                         (float)_viewModel.OrigWaveStream.TotalTime.TotalSeconds);
        }
Example #20
0
        private void _mediaElement_MediaEnded(object sender, RoutedEventArgs e)
        {
            MediaPlayerViewModel dataContext = (MediaPlayerViewModel)base.DataContext;

            if (dataContext.ContentType == ContentType.Video)
            {
                dataContext.MediaElementState = MediaElementState.Stop;
                return;
            }
            if (!dataContext.CanGetNextFile(null))
            {
                dataContext.MediaElementState = MediaElementState.Stop;
                return;
            }
            dataContext.GetNextFile.Execute(null);
        }
Example #21
0
        public void NavigatePage(string _pageName, string parameters, string callingPage)
        {
            _navigationStack.Add(_pageName);
            MessageBox.Show("added " + _pageName + " to stack");
            CurrentPage = _pageName;

            switch (_pageName)
            {
            case "MediaPlayer":
                if (MediaPlayer == null)
                {
                    MediaPlayerVM = new MediaPlayerViewModel(parameters);
                    MediaPlayer   = new MediaPlayer(parameters, callingPage);
                }
                MediaPlayer.DataContext = MediaPlayerVM;
                Navigator.NavigationService.Navigate(MediaPlayer);
                break;
            }
        }
Example #22
0
        public void LoadAndPlayFile_FileNameHasAsciiCharacter_Plays()
        {
            var pathname = MediaFileInfoTests.GetShortTestAudioFile();

            _model.LoadFile(pathname);
            _model.SetVolume(0.01f);
            var logger = new DebugLogger();

            ReflectionHelper.SetProperty(_model, "DebugOutput", logger);
            _model.PlaybackEnded += delegate
            {
                _model = null;
                File.Delete(pathname);
            };
            _model.Play();
            while (_model != null)
            {
                Thread.Sleep(10);
            }
            Assert.IsTrue(logger.GetText().Contains("Starting playback..."));
        }
Example #23
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            ViewModel = new MediaPlayerViewModel();
            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            toolbar = FindViewById <Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
            if (toolbar != null)
            {
                SetSupportActionBar(toolbar);
                SupportActionBar.SetDisplayHomeAsUpEnabled(true);
                SupportActionBar.SetHomeButtonEnabled(true);
            }

            var exoPlayer = new ExoPlayerAudioImplementation(((MediaManagerImplementation)CrossMediaManager.Current).MediaSessionManager);

            exoPlayer.RequestHeaders = new Dictionary <string, string> {
                { "Test", "1234" }
            };
            CrossMediaManager.Current.AudioPlayer = exoPlayer;
            //new AudioPlayerImplementation<ExoPlayerAudioService>(MediaSessionManager));}

            var previous = FindViewById <ImageButton>(Resource.Id.btnPrevious);

            previous.Click += async(sender, args) =>
            {
                await ViewModel.MediaPlayer.PlayPrevious();
            };

            var playpause = FindViewById <ToggleButton>(Resource.Id.btnPlayPause);

            playpause.Click += async(sender, args) =>
            {
                await ViewModel.MediaPlayer.PlayPause();
            };

            var next = FindViewById <ImageButton>(Resource.Id.btnNext);

            next.Click += async(sender, args) =>
            {
                await ViewModel.MediaPlayer.PlayNext();
            };

            var position = FindViewById <TextView>(Resource.Id.textview_position);
            var duration = FindViewById <TextView>(Resource.Id.textview_duration);
            var seekbar  = FindViewById <SeekBar>(Resource.Id.player_seekbar);

            seekbar.ProgressChanged += (sender, args) =>
            {
                if (args.FromUser)
                {
                    ViewModel.MediaPlayer.Seek(TimeSpan.FromSeconds(args.Progress));
                }
            };

            ViewModel.MediaPlayer.PlayingChanged += (sender, e) =>

            {
                RunOnUiThread(() =>
                {
                    try
                    {
                        seekbar.Max      = Convert.ToInt32(e.Duration.TotalSeconds);
                        seekbar.Progress = Convert.ToInt32(Math.Floor(e.Position.TotalSeconds));

                        position.Text = $"{e.Position.Minutes:00}:{e.Position.Seconds:00}";
                        duration.Text = $"{e.Duration.Minutes:00}:{e.Duration.Seconds:00}";
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine($"Exception : PlayingChanged: {ex.Message}");
                    }
                });
            };

            ViewModel.MediaPlayer.BufferingChanged += (sender, args) =>
            {
                RunOnUiThread(() =>
                {
                    try
                    {
                        Console.WriteLine($"BufferingChanged: {args.BufferedTime.TotalSeconds}");
                        seekbar.SecondaryProgress = Convert.ToInt32(args.BufferedTime.TotalSeconds);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine($"Exception : BufferingChanged: {ex.Message}");
                    }
                });
            };


            ViewModel.MediaPlayer.StatusChanged += (sender, e) =>
            {
                Console.WriteLine($"StausChanged {e.Status}");
                RunOnUiThread(() =>
                {
                    try
                    {
                        playpause.Checked = e.Status == MediaPlayerStatus.Playing || e.Status == MediaPlayerStatus.Loading ||
                                            e.Status == MediaPlayerStatus.Buffering;
                        if (e.Status == MediaPlayerStatus.Stopped || e.Status == MediaPlayerStatus.Failed || e.Status == MediaPlayerStatus.Loading)
                        {
                            seekbar.Progress          = 0;
                            seekbar.SecondaryProgress = 0;
                            position.Text             = "00:00";
                            duration.Text             = "00:00";
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine($"Exception : StausChanged: {ex.Message}");
                    }
                });
            };

            ViewModel.MediaPlayer.MediaFailed += (sender, e) =>
            {
                try
                {
                    Console.WriteLine($"Media failed => {e.Description}");
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Exception : MediaFailed: {ex.Message}");
                }
            };

            ViewModel.MediaPlayer.MediaFileFailed += (sender, e) =>
            {
                try
                {
                    Console.WriteLine($"Media file ({e.File.Url}) failed: Message => {e.MediaExeption.Message}");
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Exception : MediaFileFailed: {ex.Message}");
                }
            };

            var title    = FindViewById <TextView>(Resource.Id.textview_title);
            var subtitle = FindViewById <TextView>(Resource.Id.textview_subtitle);

            ViewModel.MediaPlayer.MediaFileChanged += (sender, args) =>
            {
                try
                {
                    Console.WriteLine($"File changed: {args.File.Metadata.Title}");
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Exception : MediaFileChanged: {ex.Message}");
                }

                RunOnUiThread(() =>
                {
                    try
                    {
                        if (args.File.Url == ViewModel.Queue.Current.Url)
                        {
                            title.Text    = args.File.Metadata.Title;
                            subtitle.Text = args.File.Metadata.Artist;
                            var cover     = FindViewById <ImageView>(Resource.Id.imageview_cover);
                            cover.SetImageBitmap(args.File.Metadata.AlbumArt as Bitmap);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine($"Exception : MediaFileChangedUI: {ex.Message}");
                    }
                });
            };

            ViewModel.Queue.Clear();
            ViewModel.Queue.Add(new MediaFile()
            {
                Type = MediaFileType.AudioUrl, Url = "https://ia800806.us.archive.org/15/items/Mp3Playlist_555/AaronNeville-CrazyLove.mp3"
            });
            ViewModel.Queue.Add(new MediaFile()
            {
                Type = MediaFileType.AudioUrl, Url = "http://www.bensound.org/bensound-music/bensound-goinghigher.mp3"
            });
            ViewModel.Queue.Add(new MediaFile()
            {
                Type = MediaFileType.AudioUrl, Url = "http://www.montemagno.com/sample.mp3"
            });
            ViewModel.Queue.Add(new MediaFile()
            {
                Type = MediaFileType.AudioUrl, Url = "http://www.bensound.org/bensound-music/bensound-tenderness.mp3"
            });
        }
Example #24
0
 /// ------------------------------------------------------------------------------------
 private void UpdateRecordingDuration(TimeSpan duration)
 {
     _labelRecLength.Text = string.Format(_recordedLengthLabelFormat,
                                          MediaPlayerViewModel.MakeTimeString((float)duration.TotalSeconds));
 }
 // Method style
 void Callback(NSNotification notification, MediaPlayerViewModel vm)
 {
     Console.WriteLine("Received a notification MPMusicPlayerController", notification);
     //vm.updateRunNow();
 }
Example #26
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            ViewModel = new MediaPlayerViewModel();
            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            toolbar = FindViewById <Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
            if (toolbar != null)
            {
                SetSupportActionBar(toolbar);
                SupportActionBar.SetDisplayHomeAsUpEnabled(true);
                SupportActionBar.SetHomeButtonEnabled(true);
            }

            if (ShouldUseExoPlayer)
            {
                ((MediaManagerImplementation)CrossMediaManager.Current).MediaSessionManager = new MediaSessionManager(Application.Context, typeof(ExoPlayerAudioService));
                var exoPlayer = new ExoPlayerAudioImplementation(((MediaManagerImplementation)CrossMediaManager.Current).MediaSessionManager);
                CrossMediaManager.Current.AudioPlayer = exoPlayer;
            }

            CrossMediaManager.Current.AudioPlayer.RequestHeaders = new Dictionary <string, string> {
                { "Test", "1234" }
            };

            var previous = FindViewById <ImageButton>(Resource.Id.btnPrevious);

            previous.Click += async(sender, args) =>
            {
                await PlaybackController.PlayPreviousOrSeekToStart();
            };

            var playpause = FindViewById <ToggleButton>(Resource.Id.btnPlayPause);

            playpause.Click += async(sender, args) =>
            {
                await PlaybackController.PlayPause();
            };

            var next = FindViewById <ImageButton>(Resource.Id.btnNext);

            next.Click += async(sender, args) =>
            {
                await PlaybackController.PlayNext();
            };

            var position = FindViewById <TextView>(Resource.Id.textview_position);
            var duration = FindViewById <TextView>(Resource.Id.textview_duration);
            var seekbar  = FindViewById <SeekBar>(Resource.Id.player_seekbar);

            seekbar.ProgressChanged += (sender, args) =>
            {
                if (args.FromUser)
                {
                    PlaybackController.SeekTo(args.Progress);
                }
            };

            ViewModel.MediaPlayer.PlayingChanged += (sender, e) =>

            {
                RunOnUiThread(() =>
                {
                    try
                    {
                        seekbar.Max      = Convert.ToInt32(e.Duration.TotalSeconds);
                        seekbar.Progress = Convert.ToInt32(Math.Floor(e.Position.TotalSeconds));

                        position.Text = $"{e.Position.Minutes:00}:{e.Position.Seconds:00}";
                        duration.Text = $"{e.Duration.Minutes:00}:{e.Duration.Seconds:00}";
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine($"Exception : PlayingChanged: {ex.Message}");
                    }
                });
            };

            ViewModel.MediaPlayer.BufferingChanged += (sender, args) =>
            {
                RunOnUiThread(() =>
                {
                    try
                    {
                        Console.WriteLine($"BufferingChanged: {args.BufferedTime.TotalSeconds}");
                        seekbar.SecondaryProgress = Convert.ToInt32(args.BufferedTime.TotalSeconds);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine($"Exception : BufferingChanged: {ex.Message}");
                    }
                });
            };


            ViewModel.MediaPlayer.StatusChanged += (sender, e) =>
            {
                Console.WriteLine($"StausChanged {e.Status}");
                RunOnUiThread(() =>
                {
                    try
                    {
                        playpause.Checked = e.Status == MediaPlayerStatus.Playing || e.Status == MediaPlayerStatus.Loading ||
                                            e.Status == MediaPlayerStatus.Buffering;
                        if (e.Status == MediaPlayerStatus.Stopped || e.Status == MediaPlayerStatus.Failed || e.Status == MediaPlayerStatus.Loading)
                        {
                            seekbar.Progress          = 0;
                            seekbar.SecondaryProgress = 0;
                            position.Text             = "00:00";
                            duration.Text             = "00:00";
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine($"Exception : StausChanged: {ex.Message}");
                    }
                });
            };

            ViewModel.MediaPlayer.MediaFailed += (sender, e) =>
            {
                try
                {
                    Console.WriteLine($"Media failed => {e.Description}");
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Exception : MediaFailed: {ex.Message}");
                }
            };

            ViewModel.MediaPlayer.MediaFileFailed += (sender, e) =>
            {
                try
                {
                    Console.WriteLine($"Media file ({e.File.Url}) failed: Message => {e.MediaExeption.Message}");
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Exception : MediaFileFailed: {ex.Message}");
                }
            };

            var title    = FindViewById <TextView>(Resource.Id.textview_title);
            var subtitle = FindViewById <TextView>(Resource.Id.textview_subtitle);

            ViewModel.MediaPlayer.MediaFileChanged += (sender, args) =>
            {
                try
                {
                    Console.WriteLine($"File changed: {args.File.Metadata.Title}");
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Exception : MediaFileChanged: {ex.Message}");
                }

                RunOnUiThread(() =>
                {
                    try
                    {
                        if (args.File.Url == ViewModel.Queue.Current.Url)
                        {
                            title.Text    = args.File.Metadata.Title;
                            subtitle.Text = args.File.Metadata.Artist;
                            var cover     = FindViewById <ImageView>(Resource.Id.imageview_cover);
                            cover.SetImageBitmap(args.File.Metadata.AlbumArt as Bitmap);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine($"Exception : MediaFileChangedUI: {ex.Message}");
                    }
                });
            };

            ViewModel.Init();
        }
Example #27
0
 public MusicPlayerPage()
 {
     this.InitializeComponent();
     this.BindingContext = this.vm = App.Container.Resolve <MediaPlayerViewModel>();
     this.vm.Playback.PlaybackStatusChanged += this.Playback_PlaybackStatusChanged;
 }
Example #28
0
 public void InitDataContext(MediaPlayerViewModel viewModel)
 {
     DataContext = viewModel;
     ViewModel.PlayerController.OnStateChanged += Player_OnStateChanged;
 }
Example #29
0
 public void Setup()
 {
     _model  = new MediaPlayerViewModel();
     _stream = new MemoryStream();
     _model.SetStdInForTest(new StreamWriter(_stream));
 }
Example #30
0
 private void DispatcherTimer_Tick(object sender, object e)
 {
     MediaPlayerViewModel.UpdatePosition();
 }