[書籍フォローアップ] リモート再生コントラクトへの対応について

日曜日 , 6, 1月 2013 Leave a comment

 本記事は書籍「基礎から学ぶ Windowsストアアプリ開発 」のフォローアップです。

  CHAPTER6でウェブカメラを利用した動画再生、録画アプリを作成する方法を紹介しました。

 今回はその拡張としてリモート再生コントラクト機能を追加します。

 

リモート再生コントラクト

 

 リモート再生コントラクトではPlay Toの機能を用いてストアアプリから同一ネットワーク内の別のPCへ動画、音声、画像の配信を可能にします。

 これによってノートPCにある画像をホームシアターの役割を持ったPCで再生するなどができます。

 Windows Media PlayerなどのPlay Toに対応したアプリケーション、デバイスにも配信可能です。

 

 ストアアプリのリモート再生コントラクト配信はチャームのデバイスから行います。

025

リモート再生コントラクト対応アプリ起動中にデバイスを選択すると受信可能なアプリケーションが表示される

 

PlayToManagerクラス

 

 リモート再生コントラクトの配信側はPlayToManagerクラスを利用します。

  CHAPTER6でMediaElementで再生中の動画ファイルを配信するには以下のように修正します。

 openMovieButtonTappedイベントハンドラー下部に以下の処理を追加します。

 

                // VisualStateをplayに変更
                VisualStateManager.GoToState(this, "play", false);


                // 追記ここから
                var playToManager = PlayToManager.GetForCurrentView();
                dispatcher = Window.Current.CoreWindow.Dispatcher;

                playToManager.SourceRequested += playToManager_SourceRequested;
            }
        }

 

 チャームのデバイスから受信するアプリが選択されるとSourceRequestedイベントハンドラーが呼び出されます。

 イベントハンドラーで動画ソースを以下のようにセットします。

 

        CoreDispatcher dispatcher = null;

        private void playToManager_SourceRequested(PlayToManager sender, PlayToSourceRequestedEventArgs args)
        {
            var deferral = args.SourceRequest.GetDeferral();
            var handler = dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                args.SourceRequest.SetSource(this.mediaElement.PlayToSource);
                deferral.Complete();
            });
        }

 

動作を確認する

 

 動作の検証には配信先のPCが必要になります。Windows Media Player12がPlay Toに対応しているので、Media Playerで受信するかMSDNのサンプルPlayToReceiver sampleを利用します。

 


Please give us your valuable comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です