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; }); }
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; }); } }
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(); } }); }
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; } }); }
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; } } }