本記事は書籍「基礎から学ぶ Windowsストアアプリ開発 」のフォローアップです。
CHAPTER6でウェブカメラを利用した動画再生、録画アプリを作成する方法を紹介しました。
今回はその拡張としてリモート再生コントラクト機能を追加します。
リモート再生コントラクトではPlay Toの機能を用いてストアアプリから同一ネットワーク内の別のPCへ動画、音声、画像の配信を可能にします。
これによってノートPCにある画像をホームシアターの役割を持ったPCで再生するなどができます。
Windows Media PlayerなどのPlay Toに対応したアプリケーション、デバイスにも配信可能です。
ストアアプリのリモート再生コントラクト配信はチャームのデバイスから行います。
リモート再生コントラクトの配信側は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