本記事は書籍「基礎から学ぶ 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