Exemplo n.º 1
0
        private async void MediaPlayer_PositionChanged(Windows.Media.Playback.MediaPlaybackSession sender, object args)
        {
            await TrimRange.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
            {
                if (sender.Position.TotalMilliseconds >= TrimRange.Maximum *sender.NaturalDuration.TotalMilliseconds)
                {
                    sender.Position = TimeSpan.FromMilliseconds(sender.NaturalDuration.TotalMilliseconds *TrimRange.Minimum);
                    return;
                }

                TrimRange.Value = sender.Position.TotalMilliseconds / sender.NaturalDuration.TotalMilliseconds;
            });
        }
Exemplo n.º 2
0
 private void PlaybackSession_PlaybackStateChanged(Windows.Media.Playback.MediaPlaybackSession sender, object args)
 {
     if (sender.PlaybackState == Windows.Media.Playback.MediaPlaybackState.Playing)
     {
         sender.PlaybackStateChanged -= PlaybackSession_PlaybackStateChanged;
         _ = Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
         {
             HeroVideo.Opacity          = 1;
             ProductsViewer.Opacity     = 1;
             ProductsViewer.Translation = Vector3.Zero;
         });
     }
 }
Exemplo n.º 3
0
 private async void PlaybackSession_PlaybackStateChanged(Windows.Media.Playback.MediaPlaybackSession sender, object args)
 {
     await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
     {
         //播放MV前先检查音乐是否正在播放
         if (MusicPage.ThisPage.MediaControl.MediaPlayer.PlaybackSession.PlaybackState == Windows.Media.Playback.MediaPlaybackState.Playing)
         {
             //直接暂停音乐然后播放MV的话会产生声音的争抢
             //此处采用将两个都暂停后再开始播放MV的方法
             MVControl.MediaPlayer.Pause();
             MusicPage.ThisPage.MediaControl.MediaPlayer.Pause();
             MVControl.MediaPlayer.Play();
         }
     });
 }
Exemplo n.º 4
0
 private async void PlaybackSession_PlaybackStateChanged(Windows.Media.Playback.MediaPlaybackSession sender, object args)
 {
     await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
                               () =>
     {
         if (mediaPlayer.PlaybackSession.PlaybackState == Windows.Media.Playback.MediaPlaybackState.Playing)
         {
             ButtonStopPlayer.IsEnabled = true;
         }
         else
         {
             ButtonStopPlayer.IsEnabled = false;
         }
     });
 }
Exemplo n.º 5
0
        private async void PlaybackSession_PlaybackStateChanged(Windows.Media.Playback.MediaPlaybackSession sender, object args)
        {
            if (!isMediaStarted)
            {
                if (sender.PlaybackState == Windows.Media.Playback.MediaPlaybackState.Playing)
                {
                    isMediaStarted = true;
                    await Task.Run(async() =>
                    {
                        await dispatcher.RunAsync(CoreDispatcherPriority.High, async() =>
                        {
                            var count = 0;
                            try
                            {
                                while (count < actions.Count && mediaPlayerElement.MediaPlayer.PlaybackSession.PlaybackState == Windows.Media.Playback.MediaPlaybackState.Playing)
                                {
                                    if (ct.IsCancellationRequested)
                                    {
                                        mediaPlayerElement.MediaPlayer.Pause();
                                        ct.ThrowIfCancellationRequested();
                                    }

                                    var mediaAction = actions[count];

                                    if (TimeSpan.Compare(mediaAction.MediaTimeSpan, mediaPlayerElement.MediaPlayer.PlaybackSession.Position) <= 0)
                                    {
                                        Debug.WriteLine("/Count: " + count.ToString() + " /Action: " + mediaAction.MediaScene.CurrentSequence);

                                        var serialTask = serial.SendData(mediaAction.MediaScene);
                                        if (playerType == MediaActionPlayerType.Server)
                                        {
                                            if (previousScene != mediaAction.MediaScene.CurrentScene)
                                            {
                                                previousScene = mediaAction.MediaScene.CurrentScene;
                                                var btTask    = btServer.SendMessage(mediaAction.MediaScene);
                                                while (!(serialTask.IsCompleted && btTask.IsCompleted))
                                                {
                                                    await Task.Delay(100);
                                                }
                                            }
                                            else
                                            {
                                                while (!serialTask.IsCompleted)
                                                {
                                                    await Task.Delay(100);
                                                }
                                            }
                                        }
                                        else
                                        {
                                            while (!serialTask.IsCompleted)
                                            {
                                                await Task.Delay(100);
                                            }
                                        }


                                        count++;
                                    }

                                    await Task.Delay(200);
                                }
                            }
                            catch (OperationCanceledException)
                            {
                                return;
                            }
                        });
                    });
                }
            }
            else
            {
                if (isMediaStarted && sender.PlaybackState != Windows.Media.Playback.MediaPlaybackState.Playing && sender.PlaybackState != Windows.Media.Playback.MediaPlaybackState.Buffering)
                {
                    IsPlaying      = false;
                    isMediaStarted = false;
                }
            }
        }