<metro>PlayToReceiver class

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 + "'.";   }}

 

posted @ 2012-08-31 17:37  伍锋  阅读(360)  评论(0编辑  收藏  举报