PlayToReceiver class 是一个类,代表一个PlayTo的目标。它有构造函数PlayToReceiver,作用就是创建一个新的实例。PlayToReceiver有既定的事件,例如currentTimechangeRequested,意思是请求当前时间播放变化。MuteChangeRequested是弱音变化请求。它的方法有很多,如NotifyDurationChange通知时间变化,NotifyEnded通知结束,NotifyPlaying通知发挥。它的属性有,FrindlyName,SupportAudio。
Windows.Media.PlayTo.PlayToReceiver receiver; Windows.System.Display.DisplayRequest display; Windows.UI.Core.CoreDispatcher dispatcher; bool seeking = false; private async void StartReceiverButton_Click(object sender, RoutedEventArgs e) { try { dispatcher = Window.Current.CoreWindow.Dispatcher; if (receiver == null) { receiver = new Windows.Media.PlayTo.PlayToReceiver(); } // Add Play To Receiver events and properties receiver.CurrentTimeChangeRequested += receiver_CurrentTimeChangeRequested; receiver.MuteChangeRequested += receiver_MuteChangeRequested; receiver.PauseRequested += receiver_PauseRequested; receiver.PlaybackRateChangeRequested += receiver_PlaybackRateChangeRequested; receiver.PlayRequested += receiver_PlayRequested; receiver.SourceChangeRequested += receiver_SourceChangeRequested; receiver.StopRequested += receiver_StopRequested; receiver.TimeUpdateRequested += receiver_TimeUpdateRequested; receiver.VolumeChangeRequested += receiver_VolumeChangeRequested; receiver.FriendlyName = "Sample Play To Receiver"; receiver.SupportsAudio = false; receiver.SupportsVideo = true; receiver.SupportsImage = false; // Add MediaElement events VideoPlayer.CurrentStateChanged += VideoPlayer_CurrentStateChanged; VideoPlayer.MediaEnded += VideoPlayer_MediaEnded; VideoPlayer.MediaFailed += VideoPlayer_MediaFailed; VideoPlayer.MediaOpened += VideoPlayer_MediaOpened; VideoPlayer.RateChanged += VideoPlayer_RateChanged; VideoPlayer.SeekCompleted += VideoPlayer_SeekCompleted; VideoPlayer.VolumeChanged += VideoPlayer_VolumeChanged; // Advertise the receiver on the local network and start receiving commands await receiver.StartAsync(); // Prevent the screen from locking if (display == null) display = new Windows.System.Display.DisplayRequest(); display.RequestActive(); StatusTextBlock.Text = "'" + receiver.FriendlyName + "' started."; } catch{ receiver = null; StatusTextBlock.Text = "Failed to start receiver."; }} private async void StopReceiverButton_Click(object sender, RoutedEventArgs e){ try { if (receiver != null) { await receiver.StopAsync(); if (display != null) display.RequestRelease(); // Remove Play To Receiver events receiver.CurrentTimeChangeRequested -= receiver_CurrentTimeChangeRequested; receiver.MuteChangeRequested -= receiver_MuteChangeRequested; receiver.PauseRequested -= receiver_PauseRequested; receiver.PlaybackRateChangeRequested -= receiver_PlaybackRateChangeRequested; receiver.PlayRequested -= receiver_PlayRequested; receiver.SourceChangeRequested -= receiver_SourceChangeRequested; receiver.StopRequested -= receiver_StopRequested; receiver.TimeUpdateRequested -= receiver_TimeUpdateRequested; receiver.VolumeChangeRequested -= receiver_VolumeChangeRequested; // Remove MediaElement events VideoPlayer.Pause(); VideoPlayer.CurrentStateChanged -= VideoPlayer_CurrentStateChanged; VideoPlayer.MediaEnded -= VideoPlayer_MediaEnded; VideoPlayer.MediaFailed -= VideoPlayer_MediaFailed; VideoPlayer.MediaOpened -= VideoPlayer_MediaOpened; VideoPlayer.RateChanged -= VideoPlayer_RateChanged; VideoPlayer.SeekCompleted -= VideoPlayer_SeekCompleted; VideoPlayer.VolumeChanged -= VideoPlayer_VolumeChanged; StatusTextBlock.Text = "Stopped '" + receiver.FriendlyName + "'."; } }catch{ StatusTextBlock.Text = "Failed to stop '" + receiver.FriendlyName + "'."; }}